将字典与可能重复的键合并到另一个包含最大值的字典中

时间:2019-01-18 14:16:54

标签: c# linq dictionary

我想在两个(或可能更多)字典中执行“最大”运算,这将生成一个新字典,如下所示:

  • 如果某个键仅存在于某些字典中,则其值包含在结果中;
  • 如果一个键存在于多个词典中,则结果中将包含最大的值;

有没有办法使用Linq做到这一点?我只能想到遍历每本字典的所有键,而且感觉很丑。

此外,这感觉像Linq很有用。

1 个答案:

答案 0 :(得分:6)

您可以将字典合并为一个查询,然后将其转换回字典。

var result = dictionaries.SelectMany(dict => dict)
                         .ToLookup(pair => pair.Key, pair => pair.Value)
                         .ToDictionary(g => g.Key, g => g.Max());