基于相同的键合并两个词典

时间:2017-03-27 10:03:55

标签: c# .net dictionary

我有以下内容:

dict1 Dictionary<int, string>
1, "A"
2, "B"
3, "C"


dict2 Dictionary<int, string>
1, "G"
2, "H"
3, "I"

我想要两个创建第三个字典,其中键和值是键匹配的上述值:

dict3 Dictionary<strin, string>
"A", "G"
"B", "H"
"C", "I"

我可以很容易地用两个循环完成这个,但是什么是lambda等价物?

3 个答案:

答案 0 :(得分:3)

Join他们并使用ToDictionary

dict1.Join(dict2, kv => kv.Key, kv => kv.Key, 
              (kv1, kv2) => new {Val1 = kv1.Value, Val2 = kv2.Value})
            .ToDictionary(arg => arg.Val1, arg => arg.Val2);

答案 1 :(得分:1)

dict1.ToDictionary(x => x.Value, x => dict2[x.Key]);

这假设dict1不包含任何重复值,dict2包含dict1所有键。

答案 2 :(得分:0)

使用Enumerable.Join确保您选择的条目同时存在于第一个和第二个词典中:

dict1.Join(dict2, 
           d1 => d1.Key, 
           d2 => d2.Key, 
           (d1, d2) => new { Key = d1.Value, Value = d2.Value })
     .ToDictionary(x => x.Key, x => x.Value)