C# C Linq合并词典列表
考虑下面的代码,它是一个合并到一个字典中的字典列表。这可以用linq编写吗C# C Linq合并词典列表,c#,linq,C#,Linq,考虑下面的代码,它是一个合并到一个字典中的字典列表。这可以用linq编写吗 public static Dictionary<string, uint> mergeDictionaries(List<Dictionary<string, uint>> dictlist) { Dictionary<string, uint> mergedDict = new Dictionary<string, uint>
public static Dictionary<string, uint> mergeDictionaries(List<Dictionary<string, uint>> dictlist)
{
Dictionary<string, uint> mergedDict = new Dictionary<string, uint>();
foreach (Dictionary<string, uint> dict in dictlist)
{
foreach (KeyValuePair<string, uint> entry in dict)
{
if (mergedDict.ContainsKey(entry.Key))
{
mergedDict[entry.Key] = mergedDict[entry.Key] + entry.Value;
}
else
{
mergedDict[entry.Key] = entry.Value;
}
}
}
return mergedDict;
}
99%的情况下,当人们使用ContainesKey时,他们应该使用TryGetValue。这就是这样的时刻。这两个字典-它们是否使用自定义比较器,例如,它们是否不区分大小写?错误CS1929:“IGrouping”不包含“Sum”的定义,并且最佳扩展方法重载“Enumerable”。SumIEnumerable需要“IEnumerable”Oops类型的接收器;那应该是。价值。固定的
dictlist
.SelectMany(dict => dict)
.GroupBy(kvp => kvp.Key)
.ToDictionary(g => g.Key, g => g.Sum(kvp => kvp.Value))