LINQ 按多个字段排序(orderby、thenby、Take)

LINQ 按多个字段排序(orderby、thenby、Take)

orderby  子句解析为 OrderBy()方法,orderby descending 子句解析为OrderBy Descending()方法:

var racers = Formula1.GetChampions().
Where(r = > r.Country == "Brazil").
OrderByDescending(r = > r.Wins).
Select(r = > r);

OrderBy()升序  和 OrderByDescending() 降序 方法返回 IOrderEnumerable。这个接口派生于接口
IEnumerable,但包含一个额外的方法CreateOrderedEnumerable- ()。
这个方法用于进一步给序列排序。

如果根据关键字选择器来排序,两项的顺序相同,就可以使用 ThenBy()和 ThenByDescending  ()方法继续排序。

这两个方法需要 IOrderEnumerable才能工作,但也返回这个接口。

所以,可以添加任意多个 ThenBy()和 ThenByDescending ()方法,对集合排序。

 

使用 LINQ  查询时,只需把所有用于排序的不同关键字(用逗号分隔开)添加到orderby  子句中。

这里,所有的赛手先按照国家排序,再按照姓氏排序,最后按照名字排序。

添加到 LINQ 查询结果中的Take()扩展方法用于提取前 10  个结果:

private static void Ordering() { 
var racers = (from r in Formula1.GetChampions()orderby r.Country, r.LastName, r.FirstName select r).Take(10); 
foreach (var racer inracers) 
{ Console.WriteLine("{0:C}: {0:L}, {0:F}", racer); //属性名的第一个字母 
}
}

Lambda表达式 使用OrderBy()和 ThenBy()方法可以执行相同的操作:

private static void Ordering()
{

var racers = Formula1.GetChampions(). OrderBy(r => r.Country). ThenBy(r => r.LastName). ThenBy(r => r.FirstName). Take(10);
foreach (var racer in racers) 
{
 
Console.WriteLine("{0:C}: {0:L}, {0:F}", racer); //属性名的第一个字母 }

}
//ThenBy() 降序 ThenByDescending升序
var list = _MdDatacubeofjobinfotaskBL.GetListByPage(condition, Pager1.PageSize, Pager1.CurrentPageIndex, beginDate1, endDate1).OrderByDescending(k => 

k.DataChange_CreateTime).ThenBy(k => k.JobinfotaskId);



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值