【C#】学习笔记 Linq相关
Language-Integrated Query(语言集成查询)
写了个demo,具体看🌰
涉及到了lambda表达式和一点点的delegate委托相关,但还是比较容易理解的。
还有yield,这个还不太清楚。
1 namespace LINQDemo 2 { 3 public class Employee 4 { 5 public int Id { get; set; } 6 public string Name { get; set; } 7 8 } 9 }
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 5 namespace LINQDemo 6 { 7 class Program 8 { 9 static void Main(string[] args) 10 { 11 IEnumerable<Employee> developers = new Employee[] 12 { 13 new Employee{Id=1,Name="Scott"}, 14 new Employee{Id=2,Name="Chris"} 15 }; 16 // List<Employee> sales = new List<Employee>() 17 // { 18 // new Employee{Id=3,Name="Alex"} 19 // }; 20 21 // List<T>继承自IEnumerable<T>,因此可以这样写 22 IEnumerable<Employee> sales = new List<Employee>() 23 { 24 new Employee{Id=3,Name="Alex"} 25 }; 26 27 // 第一种写法 28 // foreach (var employee in developers.Where(NameStartsWithS)) 29 // { 30 // System.Console.WriteLine(employee.Name); 31 // } 32 // 第二种写法 委托 33 // foreach (var employee in developers.Where( 34 // delegate (Employee employee) 35 // { 36 // return employee.Name.StartsWith("S"); 37 // })) 38 // { 39 // System.Console.WriteLine(employee.Name); 40 // } 41 // 第三种写法 Lambda Expressions 42 // foreach (var employee in developers.Where( 43 // e => e.Name.StartsWith("S"))) 44 // { 45 // System.Console.WriteLine(employee.Name); 46 // } 47 // 第三(1/2)种写法 Lambda Expressions 48 var query = developers.Where(e => e.Name.Length == 5) 49 .OrderBy(e => e.Name) 50 .Select(e => e); 51 52 // 第四种写法 53 /* 54 from 设置局部变量(a) in 需要查询的对象的变量名(b) 55 where 设置查询条件(a.Name.Length>5) 56 orderby 设置排序规则(a.Name) 57 select 查询必须以select或者时group子句结尾。 而上面的lambda表达式则没有这样的限制。总之这是语法规定的内容。 58 */ 59 var query2 = from developer in developers 60 where developer.Name.Length == 5 61 orderby developer.Name 62 select developer; 63 64 foreach (var employee in query) 65 { 66 System.Console.WriteLine(employee.Name); 67 } 68 System.Console.WriteLine("*******"); 69 foreach (var employee in query2) 70 { 71 System.Console.WriteLine(employee.Name); 72 } 73 } 74 private static bool NameStartsWithS(Employee employee) 75 { 76 return employee.Name.StartsWith("S"); 77 } 78 } 79 }
未完待续。。
这里有个小彩蛋~✨✨