代码之家  ›  专栏  ›  技术社区  ›  heltonbiker

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

  •  2
  • heltonbiker  · 技术社区  · 6 年前

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

    • 如果某个键只存在于某些字典中,则其值将包含在结果中;
    • 如果钥匙在 不止一个 在字典中, 最大的 结果中包含价值;

    有没有办法用LINQ来实现这一点?我只能想重复每本字典的所有键,感觉非常难看。

    此外,这让人觉得Linq是有用的。

    1 回复  |  直到 6 年前
        1
  •  6
  •   Marcin Topolewski    6 年前

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

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