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;
}
}
}