假设我有两个词典:
Dictionary<int, int> a = new Dictionary<int, int>(), b = new Dictionary<int, int>();
a.Add(1, 1);
a.Add(2, 2);
a.Add(3, 3);
b.Add(1, 1);
b.Add(2, 2);
提取它们之间的区别并以Dictionary<int, int>
类型返回它的最佳方法是什么?
答案 0 :(得分:1)
这样的东西?
var dict3 = dict1.Except(dict2).Concat(dict2.Except(dict1);
或者:
如果您已经检查过密钥是否相同,则可以使用:
var dict3 = dict2.Where(entry => dict1[entry.Key] != entry.Value)
.ToDictionary(entry => entry.Key, entry => entry.Value);
要解释,这将:
请注意,这可以避免依赖于KeyValuePair<TKey, TValue>
的相等性 - 可能可以依赖它,但我个人觉得这更清楚。 (当你为词典键使用自定义相等比较器时它也会起作用 - 尽管你也需要将它传递给ToDictionary
。)