Sorting Operator | Description |
---|---|
OrderBy | 通过给定的字段进行升序 降序 排序 |
OrderByDescending | 通过给定字段进行降序排序,仅在方法查询中使用 |
ThenBy | 第二级升序排序,仅在方法查询中使用 |
ThenByDescending | 第二级降序排序,仅在方法查询中使用 |
Reverse | 反转集合,仅在方法查询中使用 |
IListstudentList = new List () { 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 IOrderedEnumerableOrderBy (this IEnumerable source, Func keySelector); public static IOrderedEnumerable OrderBy (this IEnumerable source, Func keySelector, IComparer comparer);
IListstudentList = new List () { 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
IListstudentList = new List () { 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
查询语法支持多字段排序,