• LINQ基础—OrderBy子句


    LINQ基础—OrderBy子句

    一、简介

    适用场景:对查询出的语句进行排序,比如按时间排序等等。
    说明:按指定表达式对集合排序;默认是升序,加上descending表示降序,对应的扩展方法是OrderBy和OrderByDescending。
    1.对查询出来的结果集进行升序或降序排列。
    2.可以指定多个键,以便执行一个或多个次要排序操作。
    3.默认排序顺序为升序。
    4.编译时,orderby子句将被转换为对OrderBy方法的调用。orderby子句中的多个键转换为ThenBy方法调用。

    本例是一个升序的排序。

    public static bool IsEven(int a)
    {
        return a % 2 == 0 ? true : false;
    }
    var query = from a in arr
                 where IsEven(a)
                 orderby a
                 select a;

    如下面例子是一个降序的排序。

    var query = from a in arr
     where IsEven(a)
     orderby a descending
     select a;

    二、案例

    简单形式

    使用 orderby 按雇用日期对雇员进行排序:

    var q =
        from e in db.Employees
        orderby e.HireDate
        select e;

    说明:默认为升序排序

    带条件形式

    Where和Order By的顺序并不重要。而在T-SQL中,Where和Order By有严格的位置限制。

    var q =
        from o in db.Orders
        where o.ShipCity == "London"
        orderby o.Freight
        select o;

    说明:使用where和orderby按运费进行排序。

    降序

    var q = 
        from p in db.Products
        orderby p.UnitPrice descending
        select p;

    说明:对商品的单价进行降序排序

    ThenBy

    使用复合的 orderby 对客户按照City和ContactName进行排序,进行排序:

    var q =
        from c in db.Customers
        orderby c.City, c.ContactName
        select c;

    说明:按多个表达式进行排序,例如先按City排序,当City相同时,按ContactName排序。这一句用Lambda表达式像这样写:

    var q = 
        db.Customers
        .OrderBy(c => c.City)
        .ThenBy(c => c.ContactName).ToList();

    在T-SQL中没有ThenBy语句,其依然翻译为OrderBy,所以也可以用下面语句来表达:

    var q = 
        db.Customers
        .OrderBy(c => c.ContactName)
        .OrderBy(c => c.City).ToList();

    所要注意的是,多个OrderBy操作时,级连方式是按逆序。 对于降序的,用相应的降序操作符替换即可。

    var q = 
        db.Customers
        .OrderByDescending(c => c.City)
        .ThenByDescending(c => c.ContactName).ToList();

    ThenByDescending

    第一个ThenBy/ThenByDescending扩展方法作为第二位排序依据,这两个扩展方式都是用在OrderBy/OrderByDescending之后的,第二个ThenBy/ThenByDescending则作为第三位排序依据,以此类推。

    var q = 
        db.Customers
        .OrderByDescending(c => c.City)
        .ThenByDescending(c => c.ContactName).ToList();

    技术的发展日新月异,随着时间推移,无法保证本博客所有内容的正确性。如有误导,请大家见谅,欢迎评论区指正!
    我创建了一个.NET开发交流群,用于分享学习心得和讨论相关技术难题。欢迎有兴趣的小伙伴扫码入群,相互学习!

  • 相关阅读:
    23、mybatis学习——mybatis的二级缓存
    22、mybatis学习——mybatis的一级缓存
    21、mybatis学习——mybatis动态sql之<sql>抽取sql语句
    20、mybatis学习——<bind>绑定
    19、mybatis学习——mybatis的动态sql之<foreach>遍历传入的数组,集合和map
    18、mybatis学习——mybatis的动态sql之通过{<set>和<if>结合}或者{<trim>和<if>的结合}实现部分字段更新
    17、mybatis学习——mybatis的动态sql之<choose><when><otherwise>选择唯一条件
    16、mybatis学习——mybatis的动态sql之<if>、<where>和<trim>
    15、mybatis学习——鉴别器discriminator的使用
    [20181108]with temp as 建立临时表吗.txt
  • 原文地址:https://www.cnblogs.com/wml-it/p/14836978.html
Copyright © 2020-2023  润新知