将字典与可能重复的键组合成另一个包含最大值的字典

hel*_*ker 2 c# linq dictionary

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

  • 如果某个键仅存在于某些词典中,则其值将包含在结果中;
  • 如果一个密钥是存在于一个以上的词典,在最大值被包括在结果;

有没有办法用Linq做到这一点?我只能想到迭代每个字典的所有键,感觉非常难看.

此外,这感觉就像Linq有用的那样.

Mar*_*ski 6

您可以将字典合并到一个查找中,然后将其转换回字典.

var result = dictionaries.SelectMany(dict => dict)
                         .ToLookup(pair => pair.Key, pair => pair.Value)
                         .ToDictionary(g => g.Key, g => g.Max());
Run Code Online (Sandbox Code Playgroud)