关于c#:将多个词典合并为一个

Combining multiple dictionaries into one

本问题已经有最佳答案,请猛点这里访问。

假设我有两个变量,它们都是Dictionary类型。

1
2
Dictionary<int, int> d1 = new Dictionary<int, int> { ... };
Dictionary<int, int> d2 = new Dictionary<int, int> { ... };

这两个词典可能都包含相同的键。

我希望它们组合成一个单独的Dictionary combinedDictionary

这样做的优雅方式是什么?

我试过以下方法:

1
var combinedDictionary = d1.Concat(d2.Where(x => !d1.Keys.Contains(x.Key)));

但不幸的是,当尝试返回这个组合变量时,我得到了以下错误:

Cannot convert expression type 'System.Collections.Generic.IEnumerable>' to return type 'System.Collections.Generic.Dictionary'.

有没有可能像这样安全地铸造?

1
return (Dictionary<int, int>) combinedDictionary;

事先谢谢!


concat返回一个IEnumerable>。您要调用ToDictionary将其转换为字典。

1
2
IEnumerable<KeyValuePair<int, int>> combined = d1.Concat(d2.Where(x => !d1.Keys.Contains(x.Key)));
Dictionary<int, int> result = combined.ToDictionary(x => x.Key, x => x.Value);