LINQ排序操作符包括:OrderBy、OrderByDescending、ThenBy、ThenByDescending及Reverse。

1. OrderBy

1>. 原型定义

public static IOrderedQueryable<TSource> OrderBy<TSource, TKey>(this IQueryable<TSource> source, Expression<Func<TSource, TKey>> keySelector);

public static IOrderedQueryable<TSource> OrderBy<TSource, TKey>(this IQueryable<TSource> source, Expression<Func<TSource, TKey>> keySelector, IComparer<TKey> comparer);

2>. 示例

var products = from p in context.Productsorderby p.ProductIDselect p;

IEnumerable<Product> products = context.Products.OrderBy(p => p.ProductID);

  当扩展方法中有多个OrderBy操作符出现时,LINQ不会提示错误,将会以最后出现的OrderBy属性进行排序。

var products = context.Products.OrderBy(p => p.ProductID).OrderBy(p => p.ProductName);

  上面的例子中将按照ProductName进行升序排序。

2. OrderByDescending

1>. 原型定义

public static IOrderedQueryable<TSource> OrderByDescending<TSource, TKey>(this IQueryable<TSource> source, Expression<Func<TSource, TKey>> keySelector);

public static IOrderedQueryable<TSource> OrderByDescending<TSource, TKey>(this IQueryable<TSource> source, Expression<Func<TSource, TKey>> keySelector, IComparer<TKey> comparer);

2>. 示例

var products = from p in context.Productsorderby p.ProductID descendingselect p;

var products = context.Products.OrderByDescending(p => p.ProductID);

3. ThenBy

  在使用ThenBy操作符之前,扩展方法表达式中必须有OrderBy或OrderByDescending。ThenBy可以多次出现,排序字段累加。

1>. 原型定义

public static IOrderedQueryable<TSource> ThenBy<TSource, TKey>(this IOrderedQueryable<TSource> source, Expression<Func<TSource, TKey>> keySelector);

public static IOrderedQueryable<TSource> ThenBy<TSource, TKey>(this IOrderedQueryable<TSource> source, Expression<Func<TSource, TKey>> keySelector, IComparer<TKey> comparer);

2>. 示例

var products = from p in context.Productsorderby p.ProductID, p.ProductNameselect p;

var products = context.Products.OrderBy(p => p.ProductID).ThenBy(p => p.ProductName);

var products = context.Products.OrderBy(p => p.ProductID).ThenBy(p => p.ProductName).ThenBy(p => p.UnitPrice);

4. ThenByDescending

1>. 原型定义

public static IOrderedQueryable<TSource> ThenByDescending<TSource, TKey>(this IOrderedQueryable<TSource> source, Expression<Func<TSource, TKey>> keySelector);

public static IOrderedQueryable<TSource> ThenByDescending<TSource, TKey>(this IOrderedQueryable<TSource> source, Expression<Func<TSource, TKey>> keySelector, IComparer<TKey> comparer);

2>. 示例

var products = from p in context.Productsorderby p.ProductID, p.ProductName descendingselect p;

var products = context.Products.OrderBy(p => p.ProductID).ThenByDescending(p => p.ProductName).Select(p => p);

5. Reverse

1>.原型定义

public static IEnumerable<TSource> Reverse<TSource>(this IEnumerable<TSource> source);

2>. 示例

string[] weekdays = new string[] { "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" };
var expr = from weekday in weekdaysselect weekday;foreach (var item in expr.Reverse())
{Console.WriteLine(item);
}

LINQ系列:Linq to Object排序操作符相关推荐

  1. Linq To Object标准操作符最强总结

    Where OfType<TResult>: 说明:筛选操作符定义了返回元素的条件.Where查询操作符中,可以使用谓词.例如Lambda表达式定义的谓词,来返回布尔值.OfType< ...

  2. mysql linq any查询_LINQ标准查询操作符详解(转)

    一. 关于LINQ LINQ 英文全称是"Language-Integrated Query",中文为"语言集成查询",它是微软首席架构师.Delphi 之父和 ...

  3. C# LINQ系列:LINQ to DataSet的DataTable操作 及 DataTable与Linq相互转换

    LINQ to DataSet需要使用System.Core.dll.System.Data.dll和System.Data.DataSetExtensions.dll,在项目中添加引用System. ...

  4. .NET深入实战系列—Linq to Sql进阶

    .NET深入实战系列-Linq to Sql进阶 最近在写代码的过程中用到了Linq查询,在查找资料的过程中发现网上的资料千奇百怪,于是自己整理了一些关于Linq中容易让人困惑的地方. 本文全部代码基 ...

  5. 【LINQ】LINQ 简介

    LINQ基本概念 LINQ(语言集成查询) 是Language Integrated Query的简称,它是集成在.NET编程语言中的一种特性.已经成为了编程语言的组成部分,在编程时可以进行语法检查, ...

  6. Linq技术四:动态Linq技术 -- Linq.Expressions

    前面介绍了Linq的三个方面应用:Linq to SQL, Linq to XML和Linq to Object,这篇介绍一下动态Linq的实现方式及应用场景. 命名空间: System.Linq; ...

  7. python将object转换为float_将pandas系列类型从object转换为float64

    我有一个来自数据帧(energy["Energy Supply"])的列(类型为Series),如下所示:Country China 127191 United States 90 ...

  8. 【T-SQL系列】新的排序函数

    [T-SQL系列]新的排序函数 原文:[T-SQL系列]新的排序函数 如:ROW_NUMBER.RANK.DENSE_RANK 三个分析函数都是按照col1分组内从1开始排序 ROW_NUMBER() ...

  9. ElasticSearch 2 (34) - 信息聚合系列之多值排序

    ElasticSearch 2 (34) - 信息聚合系列之多值排序 摘要 多值桶(terms.histogram 和 date_histogram)动态生成很多桶,Elasticsearch 是如何 ...

最新文章

  1. vue 倒序遍历数组_【一天一大 lee】从中序与后序遍历序列构造二叉树 (难度:中等)Day20200925...
  2. ITK:概念检查是浮点数
  3. 技术解读|云上企业级存储——打开存储新维度,促进用户核心业务创新
  4. mysql数据库任务驱动教程答案_MySQL数据库任务驱动式教程
  5. PAT_B_1055_Java(25分)
  6. linux降低线程优先级,Linux线程优先级,行为不正常
  7. Python数据分析模块 | pandas做数据分析(三):统计相关函数
  8. ap map 脚本_【图片】fgotool辅助脚本:检测各种素材消耗AP最少的前三个地点【命运冠位指定吧】_百度贴吧...
  9. C++对象数组 —— 学生信息表
  10. displayTag使用详解
  11. 夏普比率 —— Python 实现
  12. Windows进行磁盘碎片化整理
  13. php加cnzz,vue项目中添加cnzz统计
  14. kafka配置SASL
  15. 制造型企业如何上云?
  16. 不等距双杆模型_电磁感应之双杆模型ppt课件
  17. Android 7.0配置fileprovider共享文件 解决FileUriExposedException
  18. rn+android+sdk,RN与Android原生交互
  19. 百度竞价点击器_【竞价推广100问】怎样提高百度竞价推广的点击率以及咨询量?...
  20. 自己的故事自己讲--富士康之旅

热门文章

  1. flink source 同步_大数据面试题-Flink
  2. Ananagrams Uva 156
  3. 1346. 检查整数及其两倍数是否存在 golang
  4. linux安装mysql和使用c语言操作数据库的方法 c语言连接mysql
  5. 信号量释放和等待函数sem_post()和sem_wait()
  6. 1085 PAT单位排行 (25 分
  7. 【C++ Primer | 0 】字符串函数实现
  8. Java这些高端技术只有你还不知道,移动架构师成长路线
  9. Java高级工程师每日面试题精选,面试经历分享
  10. mysql数据库实用教程答案