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>。
这些都是标准查询运算符。
IEnumerable<T>,因此可以写入 numbers.Where(...)
。
从应用程序的角度来看,扩展方法与常规实例方法是相同的。
IEnumerable<T> 之外的其他类型实现额外的扩展方法。
Lambda 表达式
“返回值”就是表达式结果。
Lambda 表达式。
查询的可组合性
因为查询变量不存储查询的结果,所以可以随时修改它或将它用作新查询的基础(即使在执行过它之后)。
【已更新最新开发文章,点击查看详细】