C# 基于相同的键合并两个词典
我有以下资料:C# 基于相同的键合并两个词典,c#,.net,dictionary,C#,.net,Dictionary,我有以下资料: dict1 Dictionary<int, string> 1, "A" 2, "B" 3, "C" dict2 Dictionary<int, string> 1, "G" 2, "H" 3, "I" dict1字典 1,“A” 2,“B” 3,“C” 字典 1,“G” 2,“H” 3,“我” 我想创建第三个字典,其中键和值是上面键匹配的值: dict3 Dictionary<strin, string> "A", "G" "B",
dict1 Dictionary<int, string>
1, "A"
2, "B"
3, "C"
dict2 Dictionary<int, string>
1, "G"
2, "H"
3, "I"
dict1字典
1,“A”
2,“B”
3,“C”
字典
1,“G”
2,“H”
3,“我”
我想创建第三个字典,其中键和值是上面键匹配的值:
dict3 Dictionary<strin, string>
"A", "G"
"B", "H"
"C", "I"
dict3字典
“A”、“G”
“B”、“H”
“C”、“I”
我可以很容易地通过两个循环来实现这一点,但是lambda等价物是什么呢
dict1.ToDictionary(x => x.Value, x => dict2[x.Key]);
这假设
dict1
不包含任何重复的值,并且dict2
拥有dict1
拥有的所有键。将它们连接起来并使用编辑
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);
使用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)
到目前为止您所尝试的方法KeyNotFound exception如果某个密钥丢失,我更喜欢这种方法,因为它更明显!