1. 程式人生 > >Linq 使用GroupJoin和DefaultIfEmpty實現左聯接

Linq 使用GroupJoin和DefaultIfEmpty實現左聯接

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