Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 基于相同的键合并两个词典_C#_.net_Dictionary - Fatal编程技术网

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如果某个密钥丢失,我更喜欢这种方法,因为它更明显!