有很多问题要用linq替换foreach,答案主要是“不要linq用于查询不修改它们的集合”
但是,我想知道我们是否可以使用linq来简单地获取列表中的所有内容,然后使用该信息修改第二个集合。
foreach (var x in list1) dict1[x] = dict1.ContainsKey(x) ? dict1[x]++ : 1;
我想知道是否可以摆脱foreach并使用linq表达式,因为我们没有修改list1中的数据,所以我不认为它会破坏“规则”。
答案 0 :(得分:2)
如果dict为空,则可以使用LINQ来构造它:
var dict = list1.GroupBy(x => x).ToDictionary(x => x.Key, y => y.Count());