合并具有类似键的字典但在C#中使用不同的值

May*_*you 4 c# dictionary

请考虑以下词典:

Dictionary<string, double> dict1 = new Dictionary<string, double>()
Dictionary<string, double> dict2 = new Dictionary<string, double>()
Run Code Online (Sandbox Code Playgroud)

这两个词典具有完全相同的键,但值不同.我想合并两个字典方式如下:创建一个新的字典的相同的密钥dict1dict2,并且其中值是在匹配值组成的阵列dict1,而在匹配的值dict2,为每个键.

我可以很容易地在循环中做到这一点,但我希望有一种更有效的方法.

任何帮助,将不胜感激!谢谢!

Jon*_*eet 12

这假设他们确实拥有相同的密钥:

var merged = dict1.ToDictionary(pair => pair.Key,
                                pair => new[] { pair.Value, dict2[pair.Key] });
Run Code Online (Sandbox Code Playgroud)

或者创建一个 Dictionary<string, Tuple<double, double>>

var merged = dict1.ToDictionary(pair => pair.Key,
                                pair => Tuple.Create(pair.Value, dict2[pair.Key]));
Run Code Online (Sandbox Code Playgroud)

或者使用匿名类型使其更清晰如果您要在同一方法中使用它:

var merged = dict1.ToDictionary(pair => pair.Key,
                                pair => new { First = pair.Value,
                                              Second = dict2[pair.Key]) });
Run Code Online (Sandbox Code Playgroud)

正如评论中所指出的,这些内部仍然循环 - 它们不会比自己编写循环更有效,但它更好阅读.