C#3.0新增功能09 LINQ 基础07 LINQ 中的查询语法和方法语法

C#3.0新增功能09 LINQ 基础07 LINQ 中的查询语法和方法语法

【已更新最新开发文章,点击查看详细】

可以使用方法语法(而不查询语法)来直接调用它们。

LINQ查询时,熟悉如何在查询和查询表达式本身中使用方法语法也十分有用。

标准查询运算符扩展方法
下面的示例演示一个简单查询表达式 以及编写为基于方法的查询 的语义上等效的查询。
 1 class QueryVMethodSyntax
 2 {
 3     static void Main()
 4     {
 5         int[] numbers = { 5, 10, 8, 3, 6, 12};
 6 
 7         // 查询语法
 8         IEnumerable<int> numQuery1 = 
 9             from num in numbers
10             where num % 2 == 0
11             orderby num
12             select num;
13 
14         // 方法语法
15         IEnumerable<int> numQuery2 = numbers.Where(num => num % 2 == 0).OrderBy(n => n);
16 
17         foreach (int i in numQuery1)
18         {
19             Console.Write(i + " ");
20         }
21         Console.WriteLine(System.Environment.NewLine);
22         foreach (int i in numQuery2)
23         {
24             Console.Write(i + " ");
25         }
26         
27         // Keep the console open in debug mode.
28         Console.WriteLine(System.Environment.NewLine);
29         Console.WriteLine("Press any key to exit");
30         Console.ReadKey();
31     }
32 }
33 /*
34     输出:
35     6 8 10 12
36     6 8 10 12
37  */

IEnumerable<T>。

这些都是标准查询运算符。

C#3.0新增功能09 LINQ 基础07 LINQ 中的查询语法和方法语法

IEnumerable<T>,因此可以写入 numbers.Where(...)

从应用程序的角度来看,扩展方法与常规实例方法是相同的。

IEnumerable<T> 之外的其他类型实现额外的扩展方法。

Lambda 表达式

“返回值”就是表达式结果。

Lambda 表达式。

查询的可组合性
因为查询变量不存储查询的结果,所以可以随时修改它或将它用作新查询的基础(即使在执行过它之后)。
 
【已更新最新开发文章,点击查看详细】