Linq 使用GroupJoin和DefaultIfEmpty实现左联接

来源:互联网 发布:正规淘宝运营 编辑:程序博客网 时间:2024/05/17 23:18

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);
0 0