`
terryfeng
  • 浏览: 504500 次
  • 性别: 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中另一组重要的操作符,主要包括`OrderBy`、`OrderByDescending`、`ThenBy`和`ThenByDescending`以及`Reverse`。`OrderBy`按照升序对序列进行排序,而`OrderByDescending`则是降序。例如,`OrderBy...

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

    "LINQ标准查询操作符[收集].pdf"这份文档详细介绍了LINQ查询中的核心组件——标准查询操作符。 标准查询操作符是一系列静态方法,它们作为扩展方法应用到 IEnumerable 和 IQueryable 接口上,使得开发者能够以声明...

    LINQ标准查询操作符.pdf

    ### LINQ标准查询操作符详解 #### 一、投影操作符 **1. Select** - **定义**: `Select`操作符用于对集合中的每个元素应用指定的函数,并将结果返回为一个新的序列。此操作通常用来从原始数据集中提取特定属性或...

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

    ### LINQ标准查询操作符详解 #### 一、投影操作符 **1. Select** `Select` 是一种常用的投影操作符,它允许我们基于输入序列中的每个元素创建一个新序列。这种操作通常用来改变序列中元素的数据类型或者提取特定...

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

    ### Linq操作符27个常用说明 #### 1. Where 操作符 - **功能描述**:`Where` 操作符用于筛选出输入集合中符合特定条件的元素,并将其组织成一个新的序列。 - **应用场景**:当你需要从现有集合中筛选出一部分满足...

    LINQ实例大全

    这类操作符包括`Where`(过滤)、`OrderBy`(排序)、`ThenBy`(次要排序)、`GroupBy`(分组)等。`Where`用于筛选满足条件的元素,`OrderBy`和`ThenBy`负责对结果进行升序或降序排序,而`GroupBy`则根据指定的键...

    DynamicQueryable基于Linq的动态查询示例

    DynamicQueryable库由Scott Guthrie创建,它提供了对各种常见的Linq操作符的动态版本,如Where、Select、OrderBy等。 以下是一些关于DynamicQueryable和Linq的关键知识点: 1. **动态表达式**:在C#中,`System....

    在linq查询中使用反射

    4. 执行查询:最后,使用`ToList()`, `FirstOrDefault()`, 或其他LINQ操作符执行查询。这将把表达式树编译为委托并执行,动态地应用到你的数据源上。 在实际应用中,反射与LINQ结合的例子可能包括以下场景: - ...

    LINQ中文学习教程

    - **LINQ操作符**:包括`Select`、`Where`、`OrderBy`、`GroupBy`等,它们允许我们对数据进行过滤、选择、排序和分组。 ## 2. LINQ to Objects - **对象查询**:LINQ to Objects直接对内存中的对象集合进行查询,...

    LINQ Method Syntax_linq_源码

    2. **查询操作符**:LINQ的方法语法由一系列链式调用的查询操作符组成,每个操作符执行特定的查询任务。例如,`Where`用于过滤数据,`Select`用于转换数据,`GroupBy`用于分组数据,`Join`用于联接数据,`OrderBy`和...

    101 LINQ Samples

    3. **Ordering Operators(排序 OrderBy)**:OrderBy和ThenBy用于对数据进行排序,可以按升序或降序排列,对于复杂的数据集,可以指定多个排序标准。 4. **Aggregate Operators(聚合函数)**:如Sum、Average、...

    LINQTOSQL高级查询介绍[参照].pdf

    在高级查询中,`OrderBy` 和 `ThenBy` 操作符用于对数据进行排序,而 `GroupBy` 和 `Having` 则用于数据的分组和过滤。 `OrderBy` 操作符允许我们根据一个或多个属性对集合进行排序。例如,`orderby e.HireDate` 将...

    LINQ 实例代码

    // 使用LINQ操作符筛选、排序和投影 var sortedAndFiltered = numbers.Where(n =&gt; n &gt; 10).OrderBy(n =&gt; n).Select(n =&gt; n * 2); // XML查询示例 XDocument doc = XDocument.Load("data.xml"); var names = ...

    linq 入门 培训 教程

    - **排序**: `OrderBy`和`ThenBy`用于对数据进行升序排序,可以配合`Descending`进行降序排序。 - **数据分区**: `GroupBy`用于按指定键进行分组,`Take`和`Skip`用于获取或跳过前n个元素,`TakeWhile`和`SkipWhile`...

    Linq_example_2_linq_

    9. **排序**:OrderBy和ThenBy方法可用于对数据进行升序或降序排序。 10. **投影**:Select操作符允许将查询结果转换为另一种类型,这在对象模型与数据模型不匹配时非常有用。 如果“Linq_example_2”这个文件是一...

    学习LINQ技术

    ### LINQ操作符 1. **选择操作符**:`Select()`用于根据指定的条件转换或选择元素,而`SelectMany()`则用于选择多个集合中的元素。 2. **过滤操作符**:`Where()`用于筛选满足条件的元素,可以配合Lambda表达式...

    LINQ_to_SQL语法及实例大全

    OrderBy操作用于对查询结果进行排序,可以按单一字段进行升序或降序排序,也可以使用ThenBy进行多字段排序。GroupBy和Having操作符则是将数据分组,并允许我们对分组后的数据进行操作,例如计算每个组的最大值、...

    Linq_to_SQL

    OrderBy操作符用于对数据进行排序,它可以是简单形式,也可以是带条件形式,支持降序排序。ThenBy和ThenByDescending用于实现多条件排序,而GroupBy形式则用于根据某一列的值对数据集进行分组。 6. GroupBy/Having...

Global site tag (gtag.js) - Google Analytics