我有两本字典。如果 dict2 中的值相同,那么我们必须添加 dict1 中匹配键的值,并在结果字典中生成结果,如下所示。
**dict1** **dict2**
Id value Id value
24379 348 24379 270451
24368 348 24368 270451
24377 90 24377 270450
24366 90 24366 270450
24369 10 24369 270450
24300 25
Result:
24379 696
24368 696
24377 190
24366 190
24369 190
我有以下逻辑,想优化这个解决方案:
Dictionary<int, int> result = new Dictionary<int, int>();
foreach (int itemKey in dict1.keys)
{
result.add (itemKey, dict1.Where(a => dict2.ContainsKey(a.key)
&& dict2.ContiansKey(itemKey)
&& dict2[a.key] == dict2[itemKey])
.Sum(a => a.value);
}
最佳答案
您可以分两步完成:
- 准备一个字典,根据
dict2
的值查找值 - 遍历
dict1
,并从查找字典中插入值
这里是你如何做到的:
var lookup = dict1
.Where(p => dict2.ContainsKey(p.Key))
.GroupBy(p => dict2[p.Key])
.ToDictionary(g => g.Key, g => g.Sum(p => p.Value));
var res = dict1.Keys
.Where(k => dict2.ContainsKey(k))
.ToDictionary(k => k, k => lookup[dict2[k]]);
关于c# - 如何加入两个词典?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41418563/