1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace Test_Lambda_Linq 8 { 9 class Program 10 { 11 static List<Person> PersonList = new List<Person>() 12 { 13 new Person(){ Id=1, Age=10, Name="James", Gender="Male"}, 14 new Person(){ Id=2, Age=20, Name="Harden", Gender="Male" }, 15 new Person(){ Id=3, Age=30, Name="George", Gender="Female"}, 16 new Person(){ Id=4, Age=40, Name="Ball", Gender="Female"}, 17 new Person(){ Id=5, Age=50, Name="Kobe", Gender="Male"}, 18 new Person(){ Id=6, Age=60, Name="Fames", Gender="Male"}, 19 new Person(){ Id=7, Age=70, Name="Garden", Gender="Male" }, 20 new Person(){ Id=8, Age=80, Name="Deorge", Gender="Female"}, 21 new Person(){ Id=9, Age=90, Name="Hall", Gender="Female"}, 22 new Person(){ Id=10, Age=100, Name="Dobe", Gender="Male"}, 23 new Person(){ Id=11, Age=110, Name="Lames", Gender="Male"}, 24 new Person(){ Id=12, Age=120, Name="Parden", Gender="Male" }, 25 new Person(){ Id=13, Age=130, Name="Keorge", Gender="Female"}, 26 new Person(){ Id=14, Age=140, Name="Yall", Gender="Female"}, 27 new Person(){ Id=15, Age=150, Name="Robe", Gender="Male"} 28 }; 29 static List<Children> ChildList = new List<Children>() 30 { 31 new Children(){ Id=1, Name="Tomas", Age=5, Class=2, Gender="Female"}, 32 new Children(){ Id=2, Name="James", Age=10, Class=1, Gender="Male"}, 33 new Children(){ Id=3, Name="Jungle", Age=12, Class=3, Gender="Male"} 34 }; 35 static void Main(string[] args) 36 { 37 //PersonList.Reverse();//全盘逆序 38 //PersonList.Reverse(0,4);//指定范围逆序 39 #region Lambda 40 #region Sort排序 41 //ServiceInvoke.Invoke(() => 42 //{ 43 // foreach (var p in PersonList) 44 // { 45 // Console.WriteLine(p.Name); 46 // } 47 //}); 48 49 //PersonList.Sort((p1, p2) => { return p1.Age - p2.Age; }); 50 //PersonList.Sort((p1, p2) => p1.Age - p2.Age );//排序 51 52 //ServiceInvoke.Invoke(() => 53 //{ 54 // foreach (var p in PersonList) 55 // { 56 // Console.WriteLine(p.Name); 57 // } 58 //}); 59 #endregion 60 61 #region Where筛选高手 62 //ServiceInvoke.Invoke(() => 63 //{ 64 // List<Person> pTemp = PersonList.Where(p => p.Age > 20 && p.Gender == "Male").ToList(); 65 // foreach (var p in pTemp) 66 // { 67 // Console.WriteLine(p.Name + " is " + p.Age + " years old "); 68 // }; 69 // PersonList.ForEach(p => Console.WriteLine(p.Name)); 70 //}); 71 #endregion 72 73 #region Select投影大牛---查询投影 74 //ServiceInvoke.Invoke(() => 75 //{ 76 // List<Person> pTemp = PersonList.Where(p => p.Gender == "Male").Select(p => (Person)new LitePerson() { Name = p.Name , Age=p.Age}).ToList(); 77 // foreach (var p in pTemp) 78 // { 79 // Console.WriteLine(p.Name + " is " + p.Age + " years old "); 80 // }; 81 // PersonList.ForEach(p => Console.WriteLine(p.Name)); 82 //}); 83 #endregion 84 85 #region OrderBy排序 第二次用ThenBy排序 86 //ServiceInvoke.Invoke(() => 87 //{ 88 // Console.WriteLine("Initial Order:"); PersonList.ForEach(p => Console.WriteLine(p.Name + " is " + p.Age + " years old "));//原来 89 // List<Person> pTempDefault = PersonList.OrderBy(p => p.Age).ToList(); Console.WriteLine("Default Order:");//默认由小到大---升序 90 // pTempDefault.ForEach(p => Console.WriteLine(p.Name + " is " + p.Age + " years old "));//排序后 91 92 // //单条件降序 93 // List<Person> pTempDescending = PersonList.OrderByDescending(p => p.Age).ToList(); Console.WriteLine("Descending Order:");//降序 94 // pTempDescending.ForEach(p => Console.WriteLine(p.Name + " is " + p.Age + " years old ")); 95 96 // //多条件综合排序 97 // List<Person> pTempOrderBy_ThenByDescending = PersonList.OrderBy(p => p.Age).ThenByDescending(p => p.Id).ToList(); Console.WriteLine("OrderBy_ThenByDescending Order:"); 98 // pTempOrderBy_ThenByDescending.ForEach(p => Console.WriteLine(p.Name + " is " + p.Age + " years old " + " And his Id is " + p.Id)); 99 //}); 100 #endregion 101 102 #region Join 多个数据集(>=2) 103 //ServiceInvoke.Invoke(() => 104 //{ 105 // var joinedList = PersonList.Join(ChildList, p => p.Id, c => c.Id, (p, c) => 106 // new { //匿名对象 107 // ParentID = p.Id, 108 // ChildID = c.Id, 109 // ParentName = p.Name, 110 // ChildName = c.Name 111 // }).ToList(); 112 // joinedList.ForEach(j => Console.WriteLine(" ParentID: " + j.ParentID + " ChildID: " + j.ChildID + " ParentName: " + j.ParentName + " ChildName: " + j.ChildName)); 113 //}); 114 #endregion 115 116 #region GroupBy 117 //ServiceInvoke.Invoke(() => 118 //{ 119 // IEnumerable<IGrouping<string, Person>> groups = PersonList.GroupBy(p => p.Gender); 120 // IList<IGrouping<string, Person>> groupList = groups.ToList(); 121 // foreach (var g in groupList) 122 // { 123 // //Key是分组依据的类型---Gender 124 // Console.WriteLine("Group:{0}", g.Key=="Male" ? "Male" : "Female"); 125 // foreach (Person p in g) 126 // { 127 // Console.WriteLine(p.Name + " is " + p.Gender); 128 // } 129 // } 130 //}); 131 #endregion 132 133 #region Skip与Take 134 //实现分页 135 //ServiceInvoke.Invoke(()=> 136 //{ 137 // Console.WriteLine("First Page:"); 138 // var firstPageData = GetPagedListByIndex(1,5); 139 // firstPageData.ForEach(p => Console.WriteLine(p.Name + " is " + p.Age + " years old " + " And his Id is " + p.Id)); 140 // Console.WriteLine("Second Page:"); 141 // var secondPageData = GetPagedListByIndex(2, 5); 142 // secondPageData.ForEach(p => Console.WriteLine(p.Name + " is " + p.Age + " years old " + " And his Id is " + p.Id)); 143 // Console.WriteLine("Third Page:"); 144 // var thirdPageData = GetPagedListByIndex(1, 5); 145 // thirdPageData.ForEach(p => Console.WriteLine(p.Name + " is " + p.Age + " years old " + " And his Id is " + p.Id)); 146 //}); 147 #endregion 148 #endregion 149 150 #region Linq 151 152 #region 基本查询 153 //ServiceInvoke.Invoke(()=> 154 //{ 155 // var maleList = from p in PersonList 156 // where p.Gender == "Male" 157 // select p; 158 // maleList.ToList().ForEach(p => Console.WriteLine(p.Name + " is " + p.Gender)); 159 //}); 160 #endregion 161 162 #region 排序条件查询 163 //ServiceInvoke.Invoke(() => 164 //{ 165 // var orderList = from p in PersonList 166 // orderby p.Age descending//先按年龄排序 167 // orderby p.Name ascending//在上面的基础上按姓名排序 168 // select p; 169 // orderList.ToList().ForEach(p => Console.WriteLine(p.Name + " is " + p.Age)); 170 //}); 171 #endregion 172 173 #region 连接查询 174 //ServiceInvoke.Invoke(() => 175 //{ 176 // var joinedList = from p in PersonList 177 // join c in ChildList 178 // on p.Id equals c.Id 179 // select new 180 // { 181 // Person = p, 182 // Child = c 183 // }; 184 // joinedList.ToList().ForEach(p => Console.WriteLine(" Person.Name is " + p.Person.Name + " Child.Name is " + p.Child.Name + " And Id is: "+ p.Child.Id)); 185 //}); 186 #endregion 187 188 #region 分组查询 189 ServiceInvoke.Invoke(() => 190 { 191 var groupList = from p in PersonList 192 group p by p.Gender; 193 foreach (var g in groupList) 194 { 195 Console.WriteLine($"Group:{g.Key}"); 196 foreach (var item in g) 197 { 198 Console.WriteLine(item.Name + " is "+ item.Gender); 199 } 200 } 201 }); 202 #endregion 203 204 #endregion 205 } 206 207 static List<Person> GetPagedListByIndex(int pageIndex, int pageSize) 208 { 209 List<Person> dataList = PersonList; 210 return dataList.Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList(); 211 } 212 } 213 }