• 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 in racers) { 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); //属性名的第一个字母 }
     }
  • 相关阅读:
    重新理解:ASP.NET 异步编程
    EF DbContext.Configuration.ProxyCreationEnabled 什么鬼?
    爱的预感
    ASP.NET MVC Ajax.ActionLink 简单用法
    DDD 领域驱动设计-谈谈 Repository、IUnitOfWork 和 IDbContext 的实践(1)
    EntityFramework 外键值映射
    ASP.NET Web API 异常日志记录
    ASP.NET MVC Application_Error 无效不执行
    JavaScript sync and async(同步和异步)
    软件的模块化开发
  • 原文地址:https://www.cnblogs.com/swtool/p/5150873.html
Copyright © 2020-2023  润新知