C# 在C语言中合并键相似但值不同的字典#

C# 在C语言中合并键相似但值不同的字典#,c#,dictionary,C#,Dictionary,考虑以下词典: Dictionary<string, double> dict1 = new Dictionary<string, double>() Dictionary<string, double> dict2 = new Dictionary<string, double>() Dictionary dict1=新字典() Dictionary dict2=新字典() 这两个字典具有完全相同的键,但值不同。我希望以以下方式合并这两个词典

考虑以下词典:

Dictionary<string, double> dict1 = new Dictionary<string, double>()
Dictionary<string, double> dict2 = new Dictionary<string, double>()
Dictionary dict1=新字典()
Dictionary dict2=新字典()
这两个字典具有完全相同的键,但值不同。我希望以以下方式合并这两个词典:创建一个新词典,其键与
dict1
dict2
相同,其中值是由每个键的
dict1
中的匹配值和
dict2
中的匹配值组成的数组

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


任何帮助都将不胜感激!谢谢大家!

这假设它们确实有相同的键:

var merged = dict1.ToDictionary(pair => pair.Key,
                                pair => new[] { pair.Value, dict2[pair.Key] });
或创建
词典

或者,如果要在同一方法中使用匿名类型,请使用匿名类型使其更干净:

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

如评论中所述,这些仍然是内部循环-它们不会比自己编写循环更有效,但阅读起来更好。

例如,使用数组而不是
元组
有什么理由吗?你说的“高效”是什么意思?@JonSkeet我对
元组
结构一点也不熟悉,但我愿意使用它!
var merged = dict1.ToDictionary(pair => pair.Key,
                                pair => new { First = pair.Value,
                                              Second = dict2[pair.Key]) });