要对序列排序,前面使用了orderby 子句。这里使用 orderby descending 子句。其中赛车手按照赢得比赛的次数进行降序排序,赢得比赛的次数用关键字选择器指定:
static void SortDescending()
{
var racers = from r in Formulal.GetChampions()
where r.Country == "Brazil"
orderby r.Wins descending
select r;
//...
}
orderby 子句解析为 OrderBy() 方法, orderby descending 子句解析为 OrderByDescending()方法:
static void SortDescendingWithMethods()
{
var racers = Formulal.GetChampions()
.Where(r => r.Country == "Brazil")
.OrderByDescending(r => r.Wins)
.Select(r => r);
//..
}
OrderBy()和 OrderByDescending()方法返回 IOrderEnumerable<TSource>。这个接口派生自IEnumerable<TSource>接口,但包含一个额外的方法CreateOrderedEnumerable<TSource>()。这个方法用于进一步给序列排序。如果根据关键字选择器来排序,其中有两项相同,就可以使用ThenBy()和ThenByDescending ()方法继续排序。这两个方法需要 IOrderEnumerable<TSource>接口才能工作,但也返回这个接口。所以,可以添加任意多个 ThenBy()和 ThenByDescending()方法,对集合排序。
使用 LINQ 查询时,只需要把所有用于排序的不同关键字(用逗号分隔开)添加到 orderby 子句中。在下例中,所有的赛车手先按照国家排序,再按照姓氏排序,最后按照名字排序。添加到 LINQ 查询结果中的 Take() 扩展方法用于返回前 10 个结果:
static void SortMultiple()
{
var racers = (fromr in Formulal.GetChampions()
orderby r.Country, r.LastName, r.FirstName
select r).Take(10);
//...
}
技术群: 需要进技术群学习交流的请添加小编微信,切记备注:加群,对以上内容有什么疑问也可以直接和小编直接沟通交流!
小编微信:mm1552923
公众号:dotNet编程大全
往期推荐
Love life,love yourself
关注小编不迷路呦~