Linq 使用GroupJoin和DefaultIfEmpty實現左聯接
阿新 • • 發佈:2019-02-20
Linq 使用GroupJoin實現Dictionary左聯接
Dictionary<string, int> dic1 = new Dictionary<string, int>();
Dictionary<string, int> dic2 = new Dictionary<string, int>();
dic1.Add("a",1);
dic1.Add("b",2);
dic1.Add("c",3);
dic1.Add ("d",4);
dic1.Add("e",5);
dic2.Add("d",4);
dic2.Add("e",5);
dic2.Add("f",6);
dic2.Add("g",7);
dic2.Add("h",8);
dic2.Add("i",9);
Dictionary<string, int> res = dic2.GroupJoin(dic1,
d2 => d2.Key ,
d1 => d1.Key,
(d2, d1s) => d1s.DefaultIfEmpty().Select(d => new { Key = d2.Key, Value = (d.Value == 0 ? d2.Value : d2.Value + 1) })
).Select(r=>r.ElementAt(0)).ToDictionary(r=>r.Key,r=>r.Value);