C# Linq Join GroupJoin
首先准备两个类
1 private class Person 2 { 3 public int CityID { set; get; } 4 5 public string Name { set; get; } 6 } 7 8 private class City 9 { 10 public int ID { set; get; } 11 12 public string Name { set; get; } 13 }
1 Person[] persons = new Person[] 2 { 3 new Person{ CityID = 1, Name = "韩梅梅" }, 4 new Person{ CityID = 2, Name = "王大锤" }, 5 new Person{ CityID = 3, Name = "刘明" }, 6 new Person{ CityID = 4, Name = "叶飞" }, 7 new Person{ CityID = 5, Name = "秦尚" }, 8 new Person{ CityID = 1, Name = "李磊" }, 9 new Person{ CityID = 3, Name = "张三" }, 10 }; 11 City[] cities = new City[] 12 { 13 new City{ ID = 1,Name = "广州" }, 14 new City{ ID = 2,Name = "深圳" }, 15 new City{ ID = 3,Name = "北京" }, 16 new City{ ID = 4,Name = "上海" } 17 }; 18 19 //内连接 根据Id与CityID 把Peson的城市找出来 20 var query1 = persons.Join(cities, p => p.CityID, c => c.ID, (p, c) => $"{p.Name} 在 {c.Name}"); 21 foreach (var item in query1) 22 { 23 Console.WriteLine($"{item}"); 24 25 //韩梅梅 在 广州 26 //王大锤 在 深圳 27 //刘明 在 北京 28 //叶飞 在 上海 29 //李磊 在 广州 30 //张三 在 北京 31 } 32 33 //组连接,根据Id与CityID,把CityId相同的Peson分组, 34 35 var query2 = cities.GroupJoin(persons, c => c.ID, p => p.CityID, (c, persons) => new { c = c.Name, p = persons }); 36 37 foreach (var item in query2) 38 { 39 Console.WriteLine($"{item.c}====="); 40 foreach (var c in item.p) 41 { 42 Console.WriteLine($"{c.Name}"); 43 } 44 //广州 ===== 45 //韩梅梅 46 //李磊 47 //深圳 ===== 48 //王大锤 49 //北京 ===== 50 //刘明 51 //张三 52 //上海 ===== 53 //叶飞 54 }