LINQ排序操作符:ThenBy和ThenByDescending
在.NET的LINQ操作符中,ThenBy
和ThenByDescending
是对集合进行多字段排序的操作符。
OrderBy()
方法根据指定的字段按升序对集合进行排序。在OrderBy
之后使用ThenBy()
方法对另一个字段上的集合按升序排序。LINQ首先根据OrderBy
方法指定的主字段对集合进行排序,然后根据ThenBy
方法指定的次字段对结果集合进行升序排序。
类似地,使用ThenByDescending()
方法对集合进行次字段的降序排序。
注:
ThenBy
和ThenByDescending
是适用于LINQ方法语法。
以下是ThenBy
和ThenByDescending
方法语法实现的对集合进行不同字段排序示例代码:
public class MyProgram
{
static void Main(string[] args)
{
var orders = FakeData.Orders;
// LINQ排序--方法语法
// 1.先按来源升序,再按价格升序
Console.WriteLine("**************先按来源升序,再按价格升序**************");
var result1 = orders
.OrderBy(x => x.Source)
.ThenBy(x => x.Price);
foreach (var order in result1)
{
Console.WriteLine($"{order.Id},{order.Customer},{order.Price}");
}
// 2.先按来源升序,再按价格降序
Console.WriteLine("**************先按来源升序,再按价格降序**************");
var result2 = orders
.OrderBy(x => x.Source)
.ThenByDescending(x => x.Price);
foreach (var order in result2)
{
Console.WriteLine($"{order.Id},{order.Customer},{order.Price}");
}
Console.ReadKey();
}
}
运行结果为:
**************先按来源升序,再按价格升序**************
2,James,2699
1,Rector,3699
4,Steven,5699
6,Rector,5699
3,Chris,1999
5,Jo,2569
**************先按来源升序,再按价格降序**************
4,Steven,5699
6,Rector,5699
1,Rector,3699
2,James,2699
5,Jo,2569
3,Chris,1999
注:在LINQ方法语法中,对多字段排序需要使用
ThenBy
(升序)或者ThenByDescending
(降序)关键字实现。
发表评论
登录用户才能发表评论, 请 登 录 或者 注册