C#3.0(六)-Linq to object(3)查询方法操作集合

Linq中的查询方法的使用,看代码吧!
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5
6 namespace TestLinQ2
7 {
8 class Student
9 {
10 public string Name
11 {
12 set ;
13 get ;
14 }
15 public int ID
16 {
17 set ;
18 get ;
19 }
20 }
21
22 /// 通过使用 C# 3.0 中引入的声明性查询语法,
23 /// 介绍性 LINQ 文档中的多数查询都被编写为查询表达式。
24 /// 但是,.NET 公共语言运行库 (CLR) 本身并不具有查询语法的概念。
25 /// 因此,在编译时,查询表达式会转换为 CLR 确实了解的内容:方法调用。
26 /// 这些方法称为“标准查询运算符”,
27 /// 它们具有如下名称:Where、Select、GroupBy、Join、Max、Average 等。
28 /// 可以通过使用方法语法而非查询语法直接调用这些方法。
29
30 /// 通常建议使用查询语法,因为它通常更简单、更易读;
31 /// 但是方法语法和查询语法之间并无语义上的区别。
32 /// 此外,一些查询(如检索匹配指定条件的元素数的那些查询
33 /// 或检索具有源序列中的最大值的元素的查询)只能表示为方法调用。
34 /// System.Linq 命名空间中的标准查询运算符的参考文档通常使用方法语法。
35 /// 因此,即使在开始编写 LINQ 查询时,
36 /// 熟悉如何在查询和查询表达式本身中使用方法语法也非常有用。
37
38
39 class Program
40 {
41 static void Main( string [] args)
42 {
43 /// List集合测试
44 List < Student > students = new List < Student > ... {
45 new Student... {Name = \" 黄老邪 \" ,ID = 1 } ,
46 new Student... {Name = \" 洪七公 \" ,ID = 2 } ,
47 new Student... {Name = \" 一灯大师 \" ,ID = 2 } ,
48 new Student... {Name = \" 欧阳峰 \" ,ID = 3 }
49 } ;
50
51 /// 这段查询语句的语义是:
52 /// 在students中查询姓名为:\"黄老邪\"的学生
53 /// 注意返回值s是也是一个集合,他包含多个对象,虽然此查询语句只包含一个
54
55 // var s = students
56 // .Where(student => student.Name.Equals(\"黄老邪\"))
57 // .Select(student => student);
58
59 // Console.WriteLine(s.First().Name);
60
61 /// 返回多个元素,并排序
62 /// 查询方法的参数均采用Lambda表达式 ,
63 /// 关于这个参看: http://www.ytcode.com/showtopic-334.aspx
64 /// 此查询学员的姓名,并非返回学员对象,反回为字符串集合
65 /// 看下面采用枚举器遍历就应该理解了
66 var s = students
67 .Where(student => student.ID > 1 )
68 // .OrderBy(student=>student.ID)
69 .OrderByDescending(student => student.ID)
70 // .ThenBy(student=>student.Name) // 先按ID排序,然后再按改名降序
71 .ThenByDescending(student => student.Name)
72 .Select(student => student.Name);
73
74 /// 采用枚举器遍历
75 // IEnumerator ie=s.GetEnumerator();
76 // while (ie.MoveNext())
77 // {
78 // Console.WriteLine(ie.Current);
79 // }
80
81 foreach (var sname in s)
82 {
83 Console.WriteLine(sname);
84 }
85
86 #region 聚合演示
87 // 选择最大的学员ID
88
89 // var sid = students
90 // .Max(student => student.ID);
91
92 // Console.WriteLine(sid);
93
94 /// 选择学员ID的和,这个只是演示,无任何意义
95
96 // var sum = students
97 // .Sum(student => student.ID);
98 // Console.WriteLine(sum);
99 /// 还有Min,Average,.Count,.Distinct
100 #endregion
101
102
103
104 }
105 }
106 }

你可能感兴趣的:(object)