请考虑以下词典:
Dictionary<string, double> dict1 = new Dictionary<string, double>()
Dictionary<string, double> dict2 = new Dictionary<string, double>()
Run Code Online (Sandbox Code Playgroud)
这两个词典具有完全相同的键,但值不同.我想合并两个字典方式如下:创建一个新的字典的相同的密钥dict1和dict2,并且其中值是在匹配值组成的阵列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)
正如评论中所指出的,这些内部仍然循环 - 它们不会比自己编写循环更有效,但它更好阅读.