zoukankan      html  css  js  c++  java
  • 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

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

  • 相关阅读:
    VS2017试用期到期后登录微软账户出现错误解决方法
    Unable to start process "dotnet-projectmodel-server" while starting VS2015 问题
    如何写.gitignore只包含指定的文件扩展名
    Win7 通过Smb共享CentOS文件步骤
    Linux下用sudo 命令时出现 is not in the sudoers file
    ubuntu下安装chorme浏览器
    qt for ios扫描二维码功能实现
    ubuntu14.04登陆后只显示桌面文件,快速启动栏不显示,终端不能打开
    编译 Qt with Openssl for IOS
    sql print原理
  • 原文地址:https://www.cnblogs.com/lanpingwang/p/6602258.html
Copyright © 2011-2022 走看看