Linq to sql 用Linq Union合并三个字典
我需要合并三个字典集合,若键相同,我想增加值Linq to sql 用Linq Union合并三个字典,linq-to-sql,dictionary,union,Linq To Sql,Dictionary,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(
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);
结果如下
一-5+5=10
二-10+20=30
3-7
4-2
5-8
6-2
字典d1=新字典();
d1.添加(“一”,5);
d1.添加(“两”,10);
d1.添加(“三”,7);
字典d2=新字典();
d2.添加(“四”,2);
d2.添加(“两”,20);
d2.添加(“五”,8);
字典d3=新字典();
d3.加上(“一”,5);
d3.添加(“六”,2);
联合:忽略匹配的结果集
var uQuery=(从d1中的a选择a.Union(从d2中的b选择b.GroupBy)(grp=>grp.Key) 您应该使用Concat而不是Union。Union将把键值对[“一”,5]视为在d1和d3中重复,因此排除它的一个实例,给出以下结果:
- “一”,5
- “两个”,30
- “三”,7
- “四”,2
- “五”,8
- “六”,2
或者更容易理解:
var union = d1.Concat(d2.Concat(d3));
var groupBy = union.GroupBy(keyValuePair => keyValuePair.Key);
var result = groupBy.ToDictionary(group => group.Key, grp => grp.Sum(kvp => kvp.Value));
你应该使用Concat而不是Union。Union将把键值对[“一”,5]视为在d1和d3中重复,因此排除它的一个实例,给出以下结果:
- “一”,5
- “两个”,30
- “三”,7
- “四”,2
- “五”,8
- “六”,2
或者更容易理解:
var union = d1.Concat(d2.Concat(d3));
var groupBy = union.GroupBy(keyValuePair => keyValuePair.Key);
var result = groupBy.ToDictionary(group => group.Key, grp => grp.Sum(kvp => kvp.Value));