C#系 常用的LinQ查询表达式之orderby

orderby可以很方便的将返回的数据进行排序,可选ascending和descending两种方式,默认的是ascending  即:默认是升序排列

语法:orderby Expression ascending or descending 二选一

模拟学生成绩排序

构造学生类

public class Student_1
{
    public int ID { get; set; }
    public string Name { get; set; }
    public int Chinese { get; set; }
    public int Math { get; set; }
    public int English { get; set; }


    public override string ToString()
    {
        return string.Format("ID:{0},Name:{1},Chinese:{2},Math:{3},English:{4}",ID,Name,Chinese,Math,English);
    }
}

构造数据源

List<Student_1> stuList = new List<Student_1>()
{
    new Student_1(){ID=1,Name="John",Chinese=92,Math=88,English=92},
    new Student_1(){ID=2,Name="Mary",Chinese=87,Math=94,English=82},
    new Student_1(){ID=3,Name="KangKang",Chinese=89,Math=91,English=96},
    new Student_1(){ID=4,Name="Maria",Chinese=88,Math=65,English=94},
    new Student_1(){ID=5,Name="Ben",Chinese=70,Math=91,English=82},
};

数学成绩升序排列

保存数据及遍历

var ret = from s in stuList
            orderby s.Math
            select s;


foreach (var item in ret)
{
    Console.WriteLine(item);
}

结果:

ID:4,Name:Maria,Chinese:88,Math:65,English:94
ID:1,Name:John,Chinese:92,Math:88,English:92
ID:3,Name:KangKang,Chinese:89,Math:91,English:96
ID:5,Name:Ben,Chinese:70,Math:91,English:82
ID:2,Name:Mary,Chinese:87,Math:94,English:82

由此可以看出本次排序使用的是数学成绩升序的规则排序的

语文成绩降序排列

var ret = from s in stuList
            orderby s.Chinese descending
            select s;


foreach (var item in ret)
{
    Console.WriteLine(item);
}

结果如下:

ID:1,Name:John,Chinese:92,Math:88,English:92
ID:3,Name:KangKang,Chinese:89,Math:91,English:96
ID:4,Name:Maria,Chinese:88,Math:65,English:94
ID:2,Name:Mary,Chinese:87,Math:94,English:82
ID:5,Name:Ben,Chinese:70,Math:91,English:82

针对于数学成绩升序的排序结果看到,有KangKang和Ben的数学成绩都为91。如果想要在数学升级升序排序的大规则下还要对有相同数学成绩同学的语文成绩有一个书序排列,就可以使用多个排列条件

 

orderby 字段1, 字段2 descending

先按 字段1 去排序,再此基础下,再按 字段2 排序,可以简单记忆为 就近原则 

var ret = from s in stuList
            orderby s.Math,s.Chinese ascending
            select s;
foreach (var item in ret)
{
    Console.WriteLine(item);
}

结果如下:

ID:4,Name:Maria,Chinese:88,Math:65,English:94
ID:1,Name:John,Chinese:92,Math:88,English:92
ID:5,Name:Ben,Chinese:70,Math:91,English:82
ID:3,Name:KangKang,Chinese:89,Math:91,English:96
ID:2,Name:Mary,Chinese:87,Math:94,English:82

版权声明:本文为yy763496668原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。