使用 Linq-Union 合并三个字典
我需要合并三个字典集合,如果键相同我想添加值。
Result is like
One - 5+5 =10
two - 10+20=30
three - 7
four - 2
five - 8
six - 2
Dictionary<string, int> d1 = new Dictionary<string, int>();
d1.Add("one", 5);
d1.Add("two", 10);
d1.Add("three", 7);
Dictionary<string, int> d2 = new Dictionary<string, int>();
d2.Add("four", 2);
d2.Add("two", 20);
d2.Add("five", 8);
Dictionary<string, int> d3 = new Dictionary<string, int>();
d3.Add("one", 5);
d3.Add("six", 2);
Union:忽略匹配的结果集。
var uQuery = (从 d1 中的 a 选择 a).Union(从 d2 中的 b 选择 b).GroupBy(grp=>grp.Key );
i need to merge three dictionary collection, if key is same i want to add value.
Result is like
One - 5+5 =10
two - 10+20=30
three - 7
four - 2
five - 8
six - 2
Dictionary<string, int> d1 = new Dictionary<string, int>();
d1.Add("one", 5);
d1.Add("two", 10);
d1.Add("three", 7);
Dictionary<string, int> d2 = new Dictionary<string, int>();
d2.Add("four", 2);
d2.Add("two", 20);
d2.Add("five", 8);
Dictionary<string, int> d3 = new Dictionary<string, int>();
d3.Add("one", 5);
d3.Add("six", 2);
Union: ignore the matching resultset.
var uQuery = (from a in d1 select a).Union(from b in d2 select b).GroupBy(grp=>grp.Key );
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您应该使用 Concat 而不是 Union。 Union 会将键值对 ["one", 5] 视为在 d1 和 d3 中重复,因此排除它的一个实例,给出以下结果:
或可能更易读:
You should use Concat instead of Union. Union will treat the key value pair ["one", 5] as duplicated in d1 and d3, and therefore exclude one instance of it, giving this result:
or perhaps more readably: