zoukankan      html  css  js  c++  java
  • LINQ标准查询操作符(一)——select、SelectMany、Where、OrderBy、OrderByDescending、ThenBy、ThenByDescending和Reverse

    本文来自:http://blog.csdn.net/xuejianwu/article/details/6931804

    一、投影操作符

    1. Select

    Select操作符对单个序列或集合中的值进行投影。下面的示例中使用select从序列中返回Employee表的所有列:

    [csharp] view plaincopy
     
    1. using (NorthwindDataContext db=new NorthwindDataContext())  
    2. {  
    3.     //查询语法  
    4.     var query =  
    5.         from e in db.Employees  
    6.         where e.FirstName.StartsWith("M")  
    7.         select e;  
    8.     //方法语法  
    9.     var q =  
    10.         db.Employees  
    11.         .Where(e => e.FirstName.StartsWith("M"))  
    12.         .Select(e => e);  
    13.     foreach (var item in query)  
    14.     {  
    15.         Console.WriteLine(item.FirstName);  
    16.     }  
    17. }  


    当然,你也可以返回单个列,例如:

    [csharp] view plaincopy
     
    1. var query =  
    2.         from e in db.Employees  
    3.         where e.FirstName.StartsWith("M")  
    4.         select e.FirstName;  

    你也可以返回序列中的某几列,例如:

    [csharp] view plaincopy
     
    1. var query =  
    2.     from e in db.Employees  
    3.     where e.FirstName.StartsWith("M")  
    4.     select new  
    5.     {  
    6.         e.FirstName,  
    7.         e.LastName,  
    8.         e.Title  
    9.     };  

     

    2. SelectMany

    SelectMany操作符提供了将多个from子句组合起来的功能,它将每个对象的结果合并成单个序列。下面是一个示例:

    [csharp] view plaincopy
     
    1. using (NorthwindDataContext db=new NorthwindDataContext())  
    2. {  
    3.     //查询语法  
    4.     var query =  
    5.         from e in db.Employees  
    6.         from o in e.Orders  
    7.         select o;  
    8.     //方法语法  
    9.     var q =  
    10.         db.Employees  
    11.         .SelectMany(e => e.Orders);  
    12.     foreach (var item in query)  
    13.     {  
    14.         Console.WriteLine(item.Freight);  
    15.     }  
    16. }  

    二、限制操作符

    Where是限制操作符,它将过滤标准应用在序列上,按照提供的逻辑对序列中的数据进行过滤。

    Where操作符不启动查询的执行。当开始对序列进行遍历时查询才开始执行,此时过滤条件将被应用到查询中。Where操作符的使用方法已经在第一节中出现过,这里不再冗述。

    三、排序操作符

    排序操作符,包括OrderBy、OrderByDescending、ThenBy、ThenByDescending和Reverse,提供了升序或者降序排序。

    1. OrderBy

    OrderBy操作符将序列中的元素按照升序排列。下面的示例演示了这一点:

    [csharp] view plaincopy
     
    1. using (NorthwindDataContext db = new NorthwindDataContext())  
    2. {  
    3.     //查询语法  
    4.     var query =  
    5.         from e in db.Employees  
    6.         orderby e.FirstName  
    7.         select e;  
    8.     //方法语法  
    9.     var q =  
    10.         db.Employees  
    11.         .OrderBy(e => e.FirstName)  
    12.         .Select(e => e);  
    13.     foreach (var item in q)  
    14.     {  
    15.         Console.WriteLine(item.FirstName);  
    16.     }  
    17. }  

    这里可以使用OrderBy的重载方法OrderBy(Func<T,TKey>,IComparer<Tkey>)来指定序列的排序方式。

    2. OrderByDescending

    OrderByDescending操作符将序列中的元素按照降序排列。用法与OrderBy相同,这里不再演示。

    3. ThenBy

    ThenBy操作符实现按照次关键字对序列进行升序排列。此操作符的查询语法与方法语法略有不同,以下代码演示了这一点:

    [csharp] view plaincopy
     
    1. using (NorthwindDataContext db = new NorthwindDataContext())  
    2. {  
    3.     //查询语法  
    4.     var query =  
    5.         from e in db.Employees  
    6.         orderby e.FirstName,e.LastName  
    7.         select e;  
    8.     //方法语法  
    9.     var q =  
    10.         db.Employees  
    11.         .OrderBy(e => e.FirstName)  
    12.         .ThenBy(e => e.LastName)  
    13.         .Select(e => e);  
    14.     foreach (var item in query)  
    15.     {  
    16.         Console.WriteLine(item.FirstName);  
    17.     }  
    18. }  

    4. ThenByDescending

    ThenByDescending操作符实现按照次关键字对序列进行降序排列。此操作符的查询语法与方法语法略有不同,以下代码演示了这一点:

    [csharp] view plaincopy
     
    1. using (NorthwindDataContext db = new NorthwindDataContext())  
    2. {  
    3.     //查询语法  
    4.     var query =  
    5.         from e in db.Employees  
    6.         orderby e.FirstName,e.LastName descending  
    7.         select e;  
    8.     //方法语法  
    9.     var q =  
    10.         db.Employees  
    11.         .OrderBy(e => e.FirstName)  
    12.         .ThenByDescending(e => e.LastName)  
    13.         .Select(e => e);  
    14.     foreach (var item in query)  
    15.     {  
    16.         Console.WriteLine(item.FirstName);  
    17.     }  
    18. }  

    5. Reverse

    Reverse将会把序列中的元素按照从后到前的循序反转。需要注意的是,Reverse方法的返回值是void,以下代码演示了这一点:

    [csharp] view plaincopy
     
      1. using (NorthwindDataContext db = new NorthwindDataContext())  
      2. {  
      3.     //方法语法  
      4.     var q =  
      5.         db.Employees  
      6.         .Select(e => e.FirstName)  
      7.         .ToList();  
      8.     q.Reverse();  
      9.     foreach (var item in q)  
      10.     {  
      11.         Console.WriteLine(item);  
      12.     }  
      13. }  
  • 相关阅读:
    springboot2 整合redis
    springboot2 整合mongodb
    Springboot2 Vue 前后端分离 整合打包 docker镜像
    nginx常见问题总结
    nginx配置中root和alias的区别
    nginx高级用法
    nginx搭建代理服务器与负载均衡器
    nginx常规扩展功能
    nginx典型官方模块解释
    nginx默认配置文件解释
  • 原文地址:https://www.cnblogs.com/zhouyunbaosujina/p/4398987.html
Copyright © 2011-2022 走看看