LINQ系列:Linq to Object排序操作符
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排序操作符相关推荐
- Linq To Object标准操作符最强总结
Where OfType<TResult>: 说明:筛选操作符定义了返回元素的条件.Where查询操作符中,可以使用谓词.例如Lambda表达式定义的谓词,来返回布尔值.OfType< ...
- mysql linq any查询_LINQ标准查询操作符详解(转)
一. 关于LINQ LINQ 英文全称是"Language-Integrated Query",中文为"语言集成查询",它是微软首席架构师.Delphi 之父和 ...
- C# LINQ系列:LINQ to DataSet的DataTable操作 及 DataTable与Linq相互转换
LINQ to DataSet需要使用System.Core.dll.System.Data.dll和System.Data.DataSetExtensions.dll,在项目中添加引用System. ...
- .NET深入实战系列—Linq to Sql进阶
.NET深入实战系列-Linq to Sql进阶 最近在写代码的过程中用到了Linq查询,在查找资料的过程中发现网上的资料千奇百怪,于是自己整理了一些关于Linq中容易让人困惑的地方. 本文全部代码基 ...
- 【LINQ】LINQ 简介
LINQ基本概念 LINQ(语言集成查询) 是Language Integrated Query的简称,它是集成在.NET编程语言中的一种特性.已经成为了编程语言的组成部分,在编程时可以进行语法检查, ...
- Linq技术四:动态Linq技术 -- Linq.Expressions
前面介绍了Linq的三个方面应用:Linq to SQL, Linq to XML和Linq to Object,这篇介绍一下动态Linq的实现方式及应用场景. 命名空间: System.Linq; ...
- python将object转换为float_将pandas系列类型从object转换为float64
我有一个来自数据帧(energy["Energy Supply"])的列(类型为Series),如下所示:Country China 127191 United States 90 ...
- 【T-SQL系列】新的排序函数
[T-SQL系列]新的排序函数 原文:[T-SQL系列]新的排序函数 如:ROW_NUMBER.RANK.DENSE_RANK 三个分析函数都是按照col1分组内从1开始排序 ROW_NUMBER() ...
- ElasticSearch 2 (34) - 信息聚合系列之多值排序
ElasticSearch 2 (34) - 信息聚合系列之多值排序 摘要 多值桶(terms.histogram 和 date_histogram)动态生成很多桶,Elasticsearch 是如何 ...
最新文章
- vue 倒序遍历数组_【一天一大 lee】从中序与后序遍历序列构造二叉树 (难度:中等)Day20200925...
- ITK:概念检查是浮点数
- 技术解读|云上企业级存储——打开存储新维度,促进用户核心业务创新
- mysql数据库任务驱动教程答案_MySQL数据库任务驱动式教程
- PAT_B_1055_Java(25分)
- linux降低线程优先级,Linux线程优先级,行为不正常
- Python数据分析模块 | pandas做数据分析(三):统计相关函数
- ap map 脚本_【图片】fgotool辅助脚本:检测各种素材消耗AP最少的前三个地点【命运冠位指定吧】_百度贴吧...
- C++对象数组 —— 学生信息表
- displayTag使用详解
- 夏普比率 —— Python 实现
- Windows进行磁盘碎片化整理
- php加cnzz,vue项目中添加cnzz统计
- kafka配置SASL
- 制造型企业如何上云?
- 不等距双杆模型_电磁感应之双杆模型ppt课件
- Android 7.0配置fileprovider共享文件 解决FileUriExposedException
- rn+android+sdk,RN与Android原生交互
- 百度竞价点击器_【竞价推广100问】怎样提高百度竞价推广的点击率以及咨询量?...
- 自己的故事自己讲--富士康之旅
热门文章
- flink source 同步_大数据面试题-Flink
- Ananagrams Uva 156
- 1346. 检查整数及其两倍数是否存在 golang
- linux安装mysql和使用c语言操作数据库的方法 c语言连接mysql
- 信号量释放和等待函数sem_post()和sem_wait()
- 1085 PAT单位排行 (25 分
- 【C++ Primer | 0 】字符串函数实现
- Java这些高端技术只有你还不知道,移动架构师成长路线
- Java高级工程师每日面试题精选,面试经历分享
- mysql数据库实用教程答案