• LINQ 学习路程 -- 查询操作 OrderBy & OrderByDescending


    Sorting OperatorDescription
    OrderBy 通过给定的字段进行升序 降序 排序
    OrderByDescending 通过给定字段进行降序排序,仅在方法查询中使用
    ThenBy 第二级升序排序,仅在方法查询中使用
    ThenByDescending 第二级降序排序,仅在方法查询中使用
    Reverse 反转集合,仅在方法查询中使用
    IList<Student> studentList = new List<Student>() { 
        new Student() { StudentID = 1, StudentName = "John", Age = 18 } ,
        new Student() { StudentID = 2, StudentName = "Steve",  Age = 15 } ,
        new Student() { StudentID = 3, StudentName = "Bill",  Age = 25 } ,
        new Student() { StudentID = 4, StudentName = "Ram" , Age = 20 } ,
        new Student() { StudentID = 5, StudentName = "Ron" , Age = 19 } 
    };
    
    var orderByResult = from s in studentList
                       orderby s.StudentName 
                       select s;
    
    var orderByDescendingResult = from s in studentList
                       orderby s.StudentName descending
                       select s;

    OrderBy扩展方法有两个重载方法,第一个方法接受一个类型参数,你可以指定通过哪个字段进行排序

    第二个方法接受一个实现IComparer的类型,用户可以自定义排序

    public static IOrderedEnumerable<TSource> OrderBy<TSource, TKey>(this IEnumerable<TSource> source, 
                                                                     Func<TSource, TKey> keySelector);
    
    public static IOrderedEnumerable<TSource> OrderBy<TSource, TKey>(this IEnumerable<TSource> source, 
                                                                     Func<TSource, TKey> keySelector, 
                                                                     IComparer<TKey> comparer);
    IList<Student> studentList = new List<Student>() { 
        new Student() { StudentID = 1, StudentName = "John", Age = 18 } ,
        new Student() { StudentID = 2, StudentName = "Steve",  Age = 15 } ,
        new Student() { StudentID = 3, StudentName = "Bill",  Age = 25 } ,
        new Student() { StudentID = 4, StudentName = "Ram" , Age = 20 } ,
        new Student() { StudentID = 5, StudentName = "Ron" , Age = 19 } 
    };
    
    var studentsInAscOrder = studentList.OrderBy(s => s.StudentName);

    OrderByDescending

    IList<Student> studentList = new List<Student>() { 
        new Student() { StudentID = 1, StudentName = "John", Age = 18 } ,
        new Student() { StudentID = 2, StudentName = "Steve",  Age = 15 } ,
        new Student() { StudentID = 3, StudentName = "Bill",  Age = 25 } ,
        new Student() { StudentID = 4, StudentName = "Ram" , Age = 20 } ,
        new Student() { StudentID = 5, StudentName = "Ron" , Age = 19 } 
    };
    
    var studentsInDescOrder = studentList.OrderByDescending(s => s.StudentName);

    多个排序

    可以使用多个字段以逗号隔开进行排序,集合首先以第一个字段进行排序,如果第一个字段有相同的值,则根据第二个字段进行排序

    注意:

    LINQ包含五种排序操作:OrderBy、OrderByDescending、ThenBy、ThenByDescending、Reverse

    查询语言不支持OrderByDescending、ThenBy、ThenByDescending、Reverse,它仅支持Order By从句后面跟ascending、descending

    查询语法支持多字段排序,

  • 相关阅读:
    C/C++操作MySQL数据库——增、删、改、查
    Mysql常用命令行大全——转载
    .NET Framework、C#、ASP.NET之间的关系
    委托和事件
    ASP.NET 页生命周期概述
    在SqlServer下增加MySql的链接服务器
    Head First 设计模式----DecoratorPattern
    jquery easyui----tree
    Head First 设计模式----ObserverPattern
    Jquery easyui----combotree
  • 原文地址:https://www.cnblogs.com/lanpingwang/p/6602258.html
Copyright © 2020-2023  润新知