我有以下内容:
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等价物?
答案 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)