LINQ查询语法

一、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

 

三、扩展方法的重要性

  

posted @ 2015-05-20 21:10  董先生  阅读(463)  评论(0编辑  收藏  举报