【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 }

 

未完待续。。

 

posted @ 2019-08-20 01:30  BrainK_1400  阅读(413)  评论(0编辑  收藏  举报