private List<Student> GetStudentList() { #region 初始化数据 List<Student> studentList = new List<Student>() { new Student() { Id=1, Name="赵亮", ClassId=2, Age=35 }, new Student() { Id=1, Name="再努力一点", ClassId=2, Age=23 }, new Student() { Id=1, Name="王炸", ClassId=2, Age=27 }, new Student() { Id=1, Name="疯子科学家", ClassId=2, Age=26 }, new Student() { Id=1, Name="灭", ClassId=2, Age=25 }, new Student() { Id=1, Name="黑骑士", ClassId=2, Age=24 }, new Student() { Id=1, Name="故乡的风", ClassId=2, Age=21 }, new Student() { Id=1, Name="晴天", ClassId=2, Age=22 }, new Student() { Id=1, Name="旭光", ClassId=2, Age=34 }, new Student() { Id=1, Name="oldkwok", ClassId=2, Age=30 }, new Student() { Id=1, Name="乐儿", ClassId=2, Age=30 }, new Student() { Id=1, Name="暴风轻语", ClassId=2, Age=30 }, new Student() { Id=1, Name="一个人的孤单", ClassId=2, Age=28 }, new Student() { Id=1, Name="小张", ClassId=2, Age=30 }, new Student() { Id=3, Name="阿亮", ClassId=3, Age=30 }, new Student() { Id=4, Name="37度", ClassId=4, Age=30 } , new Student() { Id=4, Name="关耳", ClassId=4, Age=30 } , new Student() { Id=4, Name="耳机侠", ClassId=4, Age=30 }, new Student() { Id=4, Name="Wheat", ClassId=4, Age=30 }, new Student() { Id=4, Name="Heaven", ClassId=4, Age=22 }, new Student() { Id=4, Name="等待你的微笑", ClassId=4, Age=23 }, new Student() { Id=4, Name="畅", ClassId=4, Age=25 }, new Student() { Id=4, Name="混无痕", ClassId=4, Age=26 }, new Student() { Id=4, Name="37度", ClassId=4, Age=28 }, new Student() { Id=4, Name="新的世界", ClassId=4, Age=30 }, new Student() { Id=4, Name="Rui", ClassId=4, Age=30 }, new Student() { Id=4, Name="帆", ClassId=4, Age=30 }, new Student() { Id=4, Name="肩膀", ClassId=4, Age=30 }, new Student() { Id=4, Name="孤独的根号三", ClassId=4, Age=30 } }; return studentList; #endregion }
List<Class> classList = new List<Class>() { new Class() { Id=1, ClassName="初级班" }, new Class() { Id=2, ClassName="高级班" }, new Class() { Id=3, ClassName="微信小程序" }, };
返回 studentList ,classList
造点数据:
不喜欢写废话看方法吧 主要的类型的LINQ都有
public void showlist() { //找小于AGE<30的 通用方法 List<Student> studentList = this.GetStudentList(); var list = new List<Student>(); foreach (var item in studentList) { if (item.Age < 30) { list.Add(item); Console.WriteLine($"ID{item.Name} Age{item.Age}"); } } Console.WriteLine("-----------------------------"); //表达式类型 //只要能满足扩展方法的参数即可 var list3 = studentList.Where<Student>(new Func<Student, bool>(s => s.Age < 30)); var list1 = studentList.Where(s => s.Age < 30); foreach (var item in list1) { Console.WriteLine($"ID{item.Name},AGE{item.Age}"); } Console.WriteLine("-----------------------------"); var list2 = from s in studentList where s.Age < 30 select s; foreach (var item in list2) { // Console.WriteLine($"NAME{item.Name},Age{item.Age}"); } Console.WriteLine("----------------------------------"); var result = Extensionmethods.MethoWhere(studentList, new Func<Student, bool>(s => s.Name.Length > 2)); foreach (var item in result) { // Console.WriteLine(item.Name.Length.ToString()); } { List<int> ts = new List<int>() { 1213, 123, 2, 4, 3, 24, 12 }.MethoWhere(s => s < 10); foreach (var item in ts) { Console.WriteLine(item); } } { Console.WriteLine("================投影================="); var list4 = studentList.Where<Student>(s => s.Age < 30).Select(S => new { IdName = S.Name + S.Id, Claaid = S.Age + S.ClassId }); foreach (var item in list4) { Console.WriteLine($"{item.IdName},{item.Claaid}"); } Console.WriteLine("=================表达式=================="); var list5 = from s in studentList where s.Age < 30 select new { IdName = s.Name + s.Id, Claaid = s.Age + s.ClassId }; foreach (var item in list5) { Console.WriteLine($"{item.IdName},{item.Claaid}"); } Console.WriteLine("================分组================="); var list6 = studentList.GroupBy(s => s.Age). Select(s => new { key = s.Key, MaxAge = s.Max(t => t.Age) }); foreach (var item in list6) { Console.WriteLine($"{item.key},{item.MaxAge}"); } } Console.WriteLine("================ 表达式分组================="); var list7 = from s in studentList where s.Age < 30 group s by s.ClassId into sg select new { key = sg.Key, MaxAge = sg.Max(k => sg.Key) }; foreach (var item in list7) { Console.WriteLine($"{item.key},{item.MaxAge}"); } Console.WriteLine("--------------升级版 group s by s.ClassId into sg-----------"); var list8 = from s in studentList where s.Age < 30 group s by s.ClassId into sg select sg; foreach (var ls in list8) { Console.WriteLine($"{ls.Key}"); //实现了IEnumerable 都可以foreach foreach (var item in ls) { Console.WriteLine($"{item.Name}"); } } Console.WriteLine("------------------------连表--------------------"); //LINQ不能用= 只能用Equals var list9 = from s in studentList join c in classList on s.ClassId equals c.Id select new { Name = s.Name, CalssName = c.ClassName }; foreach (var item in list9) { Console.WriteLine($"{item.Name},{item.CalssName}"); } Console.WriteLine("=======================方法式连表=================="); { var list20 = studentList.Join(classList, s => s.ClassId, c =>c.Id,(s,c)=>new { Name = s.Name, CalssName = c.ClassName }); foreach (var item in list20) { Console.WriteLine($"{item.Name},{item.CalssName}"); } } }
未完====
public void showlist() { //找小于AGE<30的 通用方法 List<Student> studentList = this.GetStudentList(); var list = new List<Student>(); foreach (var item in studentList) { if (item.Age < 30) { list.Add(item); Console.WriteLine($"ID{item.Name} Age{item.Age}"); } } Console.WriteLine("-----------------------------");
//表达式类型 //只要能满足扩展方法的参数即可
var list3 = studentList.Where<Student>(new Func<Student, bool>(s => s.Age < 30)); var list1 = studentList.Where(s => s.Age < 30); foreach (var item in list1) { Console.WriteLine($"ID{item.Name},AGE{item.Age}");
} Console.WriteLine("-----------------------------");
var list2 = from s in studentList where s.Age < 30 select s;
foreach (var item in list2) { // Console.WriteLine($"NAME{item.Name},Age{item.Age}"); }
Console.WriteLine("----------------------------------");
var result = Extensionmethods.MethoWhere(studentList, new Func<Student, bool>(s => s.Name.Length > 2));
foreach (var item in result) { // Console.WriteLine(item.Name.Length.ToString()); }
{ List<int> ts = new List<int>() { 1213, 123, 2, 4, 3, 24, 12 }.MethoWhere(s => s < 10); foreach (var item in ts) { Console.WriteLine(item); } }
{ Console.WriteLine("================投影================="); var list4 = studentList.Where<Student>(s => s.Age < 30).Select(S => new { IdName = S.Name + S.Id, Claaid = S.Age + S.ClassId }); foreach (var item in list4) { Console.WriteLine($"{item.IdName},{item.Claaid}"); }
Console.WriteLine("=================表达式=================="); var list5 = from s in studentList where s.Age < 30 select new { IdName = s.Name + s.Id, Claaid = s.Age + s.ClassId }; foreach (var item in list5) { Console.WriteLine($"{item.IdName},{item.Claaid}"); }
Console.WriteLine("================分组================="); var list6 = studentList.GroupBy(s => s.Age). Select(s => new { key = s.Key, MaxAge = s.Max(t => t.Age) }); foreach (var item in list6) { Console.WriteLine($"{item.key},{item.MaxAge}"); }
}
Console.WriteLine("================ 表达式分组================="); var list7 = from s in studentList where s.Age < 30 group s by s.ClassId into sg select new { key = sg.Key, MaxAge = sg.Max(k => sg.Key) }; foreach (var item in list7) { Console.WriteLine($"{item.key},{item.MaxAge}"); }
Console.WriteLine("--------------升级版 group s by s.ClassId into sg-----------");
var list8 = from s in studentList where s.Age < 30 group s by s.ClassId into sg select sg; foreach (var ls in list8) { Console.WriteLine($"{ls.Key}"); //实现了IEnumerable 都可以foreach foreach (var item in ls) { Console.WriteLine($"{item.Name}"); } }
Console.WriteLine("------------------------连表--------------------"); //LINQ不能用= 只能用Equals var list9 = from s in studentList join c in classList on s.ClassId equals c.Id select new { Name = s.Name, CalssName = c.ClassName }; foreach (var item in list9) { Console.WriteLine($"{item.Name},{item.CalssName}"); }
Console.WriteLine("=======================方法式连表=================="); { var list20 = studentList.Join(classList, s => s.ClassId, c =>c.Id,(s,c)=>new { Name = s.Name, CalssName = c.ClassName }); foreach (var item in list20) { Console.WriteLine($"{item.Name},{item.CalssName}"); } }
}
原文:https://www.cnblogs.com/yijieyufu/p/12783179.html