【发布时间】:2019-01-18 14:16:54
【问题描述】:
我想在两个(或可能更多)字典中执行“最大”操作,这将生成一个新字典,如下所示:
- 如果某个键仅存在于某些字典中,则它的值将包含在结果中;
- 如果多个字典中存在键,则最大值将包含在结果中;
有没有办法使用 Linq 做到这一点?只能想到遍历每个字典的所有键,感觉很丑。
此外,这感觉像是 Linq 有用的东西。
【问题讨论】:
标签: c# linq dictionary
我想在两个(或可能更多)字典中执行“最大”操作,这将生成一个新字典,如下所示:
有没有办法使用 Linq 做到这一点?只能想到遍历每个字典的所有键,感觉很丑。
此外,这感觉像是 Linq 有用的东西。
【问题讨论】:
标签: c# linq dictionary
您可以将字典合并到一个查找中,然后将其转换回字典。
var result = dictionaries.SelectMany(dict => dict)
.ToLookup(pair => pair.Key, pair => pair.Value)
.ToDictionary(g => g.Key, g => g.Max());
【讨论】: