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); //属性名的第一个字母 }
 }
时间: 2024-11-08 18:03:06

LINQ 按多个字段排序(orderby、thenby、Take)的相关文章

List多字段排序,orderBy,ThenBy

List排序问题,orderBy,ThenBy 1.List中一个字段排序 前几天做的项目中,获取的List<T>需要用某个字段来进行排序,困扰了很久.用OrderBy解决了.具体是这样的. List.OrderBy(i=>i.id):表示根据id来排序,默认是升序. List.OrderByDescending(i=>i.name):根据name排序,降序排列. 2.List中两个字段排序: 写法如下,直接用例子: List.OrderBy(i=>i.id).ThenBy(

asp.net mvc 多字段排序

以下代码可实现多字段排序,通过点击列标题,实现排序. 控制器: public ActionResult Index(string sortOrder) { ViewBag.FirstNameSortParam = string.IsNullOrEmpty(sortOrder) ? "FirstName_desc" : ""; ViewBag.LastNameSortParm = sortOrder == "LastName" ? "La

php 数组排序以及按照某个字段排序

经常,开发人员发现在PHP中使用这种数据结构对值或者数组元素进行排序非常有用.PHP提供了一些适合多种数组的排序函数,这些函数允许你在数组内部对元素进行排列,也允许用很多不同的方法对它们进行重新排序.在这篇文章中我们将讨论该排序中最重要的几个函数. 简单排序 首先,让我们来看看最简单的情况:将一个数组元素从低到高进行简单排序,这个函数既可以按数字大小排列也可以按字母顺序排列.PHP的sort()函数实现了这个功能,如Listing A所示: Listing A <?php  $data = a

PHP 二维数组根据某个字段排序

原文:PHP 二维数组根据某个字段排序 要求:从两个不同的表中获取各自的4条数据,然后整合(array_merge)成一个数组,再根据数据的创建时间降序排序取前4条. 遇到这个要求的时候就不是 ORDER BY 能解决的问题了.因此翻看 PHP 手册查找到了如下方法,做此笔记. <?php /** * 二维数组根据某个字段排序 * 功能:按照用户的年龄倒序排序 * @author ruxing.li */ header('Content-Type:text/html;Charset=utf-8'

字符串排序和多字段排序(string sorting and multi-fields)

被分词的string字段也是一个multi-value字段,但是对他们进行排序往往得不到想要的结果.如果你对"fine old art"进行分词,他将会返回三个term.我们也许对以一个term进行字母排序,然后第二个等.但是ES没有在这个期间的时间顺序. 你可以使用min和max排序模式(默认使用min),但是结果既不是art或者old也不是任何想要的结果. 为了对string field进行排序,这个field就只能是一个term:也就是一个not_analyzed类型的strin

SQL 单表分页存储过程和单表多字段排序和任意字段分页存储过程

  第一种:单表多字段排序分页存储过程       --支持单表多字段查询,多字段排序 create PROCEDURE [dbo].[UP_GetByPageFiledOrder] ( @TableName varchar(50), --表名 @ReFieldsStr varchar(200) = '*', --字段名(全部字段为*) @OrderString varchar(200), --排序字段(必须!支持多字段不用加order by) @WhereString varchar(500)

【HOW】如何对Reporting Services表格中数据按字段排序

Reporting Services中可以设置排序的地方非常多,有很多地方从其字面意思上好像是对表格数据的排序,但实际都不管用.在多次尝试后,得到如下的有效设置方式: 1. 鼠标右键单击要排序字段的内容单元格(不是标题单元格). 2. 在弹出菜单中选择:行组 > 组属性. 3. 在弹出窗口中选择"排序"选项卡,并在右侧界面中添加排序依据. 有时,在完成如上设置后仍未看到正确排序,这可能是因为对应数据集的排序规则(类似字符集)不正确,设置方法如下: 1. 在表格对应的数据集名称上右

vim 按照字段排序文件

假设有如下数据,以空格为数据列分割: 1  何维川   124.63     172  0.72 2  张子寅   99.67      172  0.58 3  周广滨   93.34      188  0.50 4  陈兴     41.86      188  0.22 5  薛永成   26.68      188  0.14 6  张永福   18.25      188  0.10 7  李华田   18.25      188  0.10 8  葛祥营   11.89      

sql server 2000 单主键高效分页存储过程 (支持多字段排序)

sql server 2000 单主键高效分页存储过程 (支持多字段排序) Create PROC P_viewPage             /*              nzperfect [no_mIss] 高效通用分页存储过程(双向检索) 2007.5.7  QQ:34813284              敬告:适用于单一主键或存在唯一值列的表或视图              ps:Sql语句为8000字节,调用时请注意传入参数及sql总长度不要超过指定范围