C# 序列排序

da0ed3d990cc7092540569ebb1b5b915.png

要对序列排序,前面使用了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编程大全   

往期推荐

467f710a39a4d2fea60a892822a83250.png

Love life,love yourself

关注小编不迷路呦~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值