1、ThenBy操作符
ThenBy
操作符可以对一个类型为IOrderedEnumerable<T>
,(OrderBy
和OrderByDesceding
操作符的返回值类型)的序列再次按照特定的条件顺序排序。
例如,
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication { class Program { static void Main(string[] args) { List<People> pList = new List<People>(); People p1 = new People(1, "C", 4); People p2 = new People(2, "Java", 7); People p3 = new People(3, "Python", 11); People p4 = new People(4, "Linux", 1); People p5 = new People(5,"CJavaPY",1); pList.Add(p1); pList.Add(p2); pList.Add(p3); pList.Add(p4); pList.Add(p5); List<People> pList1 = new List<People>(); IEnumerable<People> newList = pList.OrderBy(p => p.Age).ThenBy(p => p.Id); foreach (var item in newList) { Console.WriteLine(item.Name); } AgeComparer ac = new AgeComparer(); IEnumerable<People> newList1 = pList.OrderBy(p => p.Age, ac).ThenBy(p => p.Id); Console.WriteLine(); foreach (var item in newList1) { Console.WriteLine(item.Name); } Console.ReadKey(); } } public class People { public People(int id, string name, int age) { this.Id = id; this.Name = name; this.Age = age; } public int Id { get; set; } public string Name { get; set; } public int Age { get; set; } } public class AgeComparer : IComparer<int> { public int Compare(int a1, int a2) { if (a1 > a2) { return (-1); //表示a1 > a2 } else if (a1 < a2) { return (1); //表示a1 < a2 } else { return (0); //表示a1=a2 } } } }
2、ThenByDescending操作符
ThenByDescending
操作符的功能与ThenBy
操作符基本相同,二者只是排序的方式不同,ThenBy
是顺序排序,而ThenByDescending
则是逆序排序。
例如,
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication { class Program { static void Main(string[] args) { List<People> pList = new List<People>(); People p1 = new People(1, "C", 4); People p2 = new People(2, "Java", 7); People p3 = new People(3, "Python", 11); People p4 = new People(4, "Linux", 1); People p5 = new People(5,"CJavaPY",1); pList.Add(p1); pList.Add(p2); pList.Add(p3); pList.Add(p4); pList.Add(p5); List<People> pList1 = new List<People>(); IEnumerable<People> newList = pList.OrderBy(p => p.Age).ThenBy(p => p.Id); //倒序 foreach (var item in newList) { Console.WriteLine(item.Name); } Console.ReadKey(); } } public class People { public People(int id, string name, int age) { this.Id = id; this.Name = name; this.Age = age; } public int Id { get; set; } public string Name { get; set; } public int Age { get; set; } } }