32

可能重复:
在 C# 中合并字典

字典 1

“a”、“1”
、“b”、“2”

字典 2

“c”、“3”
、“d”、“4”

字典 3

“e”、“5”
、“f”、“6”

组合字典

“a”、“1”、
“b”、“2”、
“c”、“3”、
“d”、“4”
、“e”、“5”
、“f”、“6”

如何将上述 3 个字典组合成一个组合字典?

4

2 回答 2

146
var d1 = new Dictionary<string, int>();
var d2 = new Dictionary<string, int>();
var d3 = new Dictionary<string, int>();

var result = d1.Union(d2).Union(d3).ToDictionary (k => k.Key, v => v.Value);

编辑
为了确保没有重复的键使用:

var result = d1.Concat(d2).Concat(d3).GroupBy(d => d.Key)
             .ToDictionary (d => d.Key, d => d.First().Value);
于 2012-05-11T22:31:23.653 回答
14

只需遍历它们:

var result = new Dictionary<string, string>();

foreach (var dict in dictionariesToCombine) {
    foreach (var item in dict) {
        result.Add(item.Key, item.Value);
    }
}

(假设你dictionariesToCombine的一些IEnumerable字典要组合,比如一个数组。)

于 2012-05-11T22:27:51.677 回答