一、LINQ查询时又两种语法可供选择:方法语法(Fluent Syntax)和查询语法(Query Expression)
1、方法语法:本质是通过扩展方法和Lambda表达式来创建查询
3、查询语法:查询比较类似于SQL查询
关系:.NET公共语言运行库(CLR)并不具有查询语法的概念。所以,编译器会在程序编译时把查询表达式转换为方法语法,即对扩展方法的调用。所以使用方法语法会让我们更加接近和了解LINQ的实现和本质,并且一些查询只能表示为方法调用,如检索序列中的最大值、最小值元素的查询,他们在查询语法中就没有对应的实现。这两种语法和互相补充和兼容的,我们可以在一个查询中混合使用方法语法和查询语法。
二、链接查询运算符
如果需要创建更加复杂的查询,我们可以在表达式之后添加其他查询运算符,产生一个查询链;一个运算符的输出sequence会成为下一个运算符的输入sequence,其结果形成了一个sequence的传输链
static void Main(string[] args) { string[] names = { "Tom", "Dick", "Harry", "Mary", "Jay" }; IEnumerable<string> query = names .Where(n => n.Contains("a")) .OrderBy(n => n.Length) .Select(n => n.ToUpper()); foreach (string name in query) Console.WriteLine(name); } // Result: JAY MARY HARRY
三、扩展方法的重要性
时间: 2024-10-18 23:43:07