请考虑以下词典:
Dictionary<string, double> dict1 = new Dictionary<string, double>()
Dictionary<string, double> dict2 = new Dictionary<string, double>()
两个词典具有完全相同的键,但值不同。我想通过以下方式合并两个词典:使用与dict1
和dict2
相同的键创建一个新词典,其中值是由{{1}中的匹配值组成的数组每个键都有dict1
中的匹配值。
我可以轻松地在循环中做到这一点,但我希望有一种更有效的方法。
任何帮助将不胜感激!谢谢!
答案 0 :(得分:12)
这假设他们确实拥有相同的密钥:
var merged = dict1.ToDictionary(pair => pair.Key,
pair => new[] { pair.Value, dict2[pair.Key] });
或创建Dictionary<string, Tuple<double, double>>
var merged = dict1.ToDictionary(pair => pair.Key,
pair => Tuple.Create(pair.Value, dict2[pair.Key]));
如果要在同一方法中使用它,请使用匿名类型使其更清晰:
var merged = dict1.ToDictionary(pair => pair.Key,
pair => new { First = pair.Value,
Second = dict2[pair.Key]) });
正如评论中所指出的那样,这些内容仍然在内部循环 - 它们不会比自己编写循环更效率,但它更好阅读。