`
terryfeng
  • 浏览: 493349 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

LINQ 标准的查询操作符 排序 orderby、thenby、Take

阅读更多

要对序列排序,前面使用了 orderby  子句。下面复习一下前面使用 orderby descending  子句的例子。其中
赛手按照赢得比赛的次数进行降序排序,赢得比赛的次数是用关键字选择器指定的:

private static void Ordering()
        {

            var racers = from r in Formula1.GetChampions()
                         where r.Country == "Brazil"
                         orderby r.Wins descending
                         select r; 

            foreach (var racer in racers)
            {
                Console.WriteLine("{0:C}: {0:L}, {0:F}", racer);  //属性名的第一个字母
            }


        }

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<TSource>。这个接口派生于接口
IEnumerable<TSource>,但包含一个额外的方法CreateOrderedEnumerable- <TSource>()。
这个方法用于进一步给序列排序。

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

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

所以,可以添加任意多个 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);  //属性名的第一个字母
           }


       }
分享到:
评论

相关推荐

    linq标准查询操作符

    LINQ标准查询操作符LINQ标准查询操作符LINQ标准查询操作符LINQ标准查询操作符

    LINQ标准查询操作符[收集].pdf

    LINQ标准查询操作符[收集].pdf

    LINQ标准查询操作符(pdf中文版)---通俗易懂

    LINQ标准查询操作符,对linq的扩展方法作了非常详细的描述,配合了,相当好懂的例子。非常不错,我已经看完了,5星推荐。

    LINQ 的标准查询操作符

    语言集成查询 (LINQ) ...除强类型化语法外,LINQ 查询还具有一个标准查询操作符库来增强其功能。这些标准查询操作符对序列进行运算并可执行各种运算,如确定序列中是否存在某个值以及对序列运行合计函数(如求和)。

    LINQ的标准查询操作符

    语言集成查询(LINQ)允许开发人员通过类型化语法使用Micrisoft.net Framework3.5代码编写类似SQL的查询.....(本资料使用LINQ来执行实际的查询和运算)

    LINQ标准查询操作符.pdf

    Linq 查询语法,作者收集的很详细并配有简单的实例。pdf格式

    VB.NET LINQ各项查询操作示例

    这是accessoft上,作者:煮江品茶 写的一个...摘 要:【VB.NET小品】LINQ标准操作符示例 正 文: LINQ是VS中的一个通用的数据查询技术,该技术简化了对SQL、XML等数据的查询。本示例介绍LINQ的标准查询符的使用方法。

    LINQ 标准查询操作符

    本文介绍了LINQ标准查询操作符。没有这些操作符,LINQ就不会存在。本文为理解这些操作符的功能提供了很好的基础。了解它们将会很有帮助,因为LINQ的各种Provider都是基于这些操作符来完成各自丰富的功能。

    Linq操作符27个常用说明.docx

    Linq操作符27个常用说明,对Linq to OBJECT进行了详细说明,包括Where,Select,SelectMany,Take,TakeWhile,Skip,SkipWhile,Concat,OrderBy,OrderByDescending,ThenBy等

    .net linq动态组合查询条件及排序

    .net linq动态组合查询条件及排序,让linq像ado.net那样动态组合条件查询

    LinQ(Language Integrated Query)体验

    LINQ定义了一组标准查询操作符用于在所有基于.NET平台的编程语言中更加直接地声明跨越、过滤和投射操作的统一方式,标准查询操作符允许查询作用于所有基于IEnumerable接口的源,并且它还允许适合于目标域或技术的第...

    LINQ简要技术~~~

    2.5. 排序操作符 4 2.6. 连接操作符 4 2.7. 集合操作符 6 2.8. 转换操作符 6 2.9. 元素操作符 7 2.10. 生成操作符 7 第3章 非延迟操作符 8 3.1. 转换操作符 8 3.2. 相等操作符 9 3.3. 元素操作符 9 3.4. 量词操作符 ...

    LINQ 实战 7/11

    2.5.2 更多使用LINQ标准查询操作符的例子 50 2.5.3 将扩展方法引入到实例程序中 51 2.5.4 注意事项 52 2.6 匿名类型 54 2.6.1 使用匿名类型组合数据 55 2.6.2 没有名字的类型也是类型 55 2.6.3 使用...

    linq 简单查询,分页

    linq简单查询,可实现分页,linq to sql

    新技术讲座LINQ复杂查询 (学习资料带例子)

    新技术讲座LINQ复杂查询 (学习资料带例子) LINQ复杂查询 Linq

    Linq 的一些例子

    LINQ - 排序操作符 此示例显示了不同用途的排序操作符 LINQ - 集合运算符 此示例显示了不同用途的集合运算符。 LINQ - 查询执行 此示例显示了不同用途的查询执行 LINQ - 分区运营商 此示例显示了不同用途的分区运营...

    Linq OrderBy

    Dynamic Linq SortBy

    linq 简单查询示例

    linq 简单查询示例,union,select,from,where,contact

Global site tag (gtag.js) - Google Analytics