通过orderby关键字,LINQ可以实现升序和降序排序。LINQ还支持次要排序。

LINQ默认的排序是升序排序,如果你想使用降序排序,就要使用descending关键字。

static void Main(string[] args)
{
var dicts = new Dictionary<int, string>(); dicts.Add(, "Jack");
dicts.Add(, "Tom");
dicts.Add(, "Tod");
dicts.Add(, "Alics"); var dictSorted = from n in dicts
orderby n.Key descending
select n; foreach (var item in dictSorted)
{
Console.WriteLine(item.Value);
}
/*Output
* Tom
* Jack
* Tod
* Alics
*/
}

以上的示例也可以直接使用扩展方法来达到相同的效果:

static void Main(string[] args)
{
var dicts = new Dictionary<int, string>(); dicts.Add(, "Jack");
dicts.Add(, "Tom");
dicts.Add(, "Tod");
dicts.Add(, "Alics"); foreach (var item in dicts.OrderByDescending(n=>n.Value))
{
Console.WriteLine(item.Value);
}
}

输出结果跟上述示例是相同的。

LINQ的任何功能都是构建在扩展方法之上的,但有些功能拥有LINQ关键字,有些又只能通过扩展方法实现。比如Reverse扩展方法可以翻转集合中的元素,但并没有提供相应的LINQ关键字,所以只能通过扩展方法的方式调用。

关于排序的扩展方法有OrderBy、OrderByDescending、ThenBy、ThenByDescending和Reverse。很多LINQ的关键字和它们的扩展方法名对应,有些则是隐含的,比如你加上Descending的关键字,就会调用mathodnameByDescending的扩展方法。

下面的示例来说明一下次要排序。从扩展方法的角度讲就是调用ThenBy扩展方法,而对于LINQ就是一个逗号分隔的列表,在orderby子句中,第一个值后面的项都属于次要排序。

static void Main(string[] args)
{
var students = new[]{
new {name="Jane",age=,gender="famale"},
new {name="Hank",age=,gender="male"},
new {name="Niko",age=,gender="male"},
new {name="Curry",age=,gender="male"}
}; var sorted = from n in students
orderby n.age, n.gender
select n; foreach (var item in sorted)
{
Console.WriteLine(item);
} }

转自:http://www.cnblogs.com/heqichang/archive/2011/08/03/2126640.html

通过orderby关键字,LINQ可以实现升序和降序排序。LINQ还支持次要排序。的更多相关文章

  1. 【转】java comparator 升序、降序、倒序从源码角度理解

    原文链接:https://blog.csdn.net/u013066244/article/details/78997869 环境jdk:1.7+ 前言之前我写过关于comparator的理解,但是都 ...

  2. list<T>升序、降序

    List<test> list = new List<test> (); var result = list.OrderByDescending(p => p.we).T ...

  3. JDBC_10_使用Statement实现升序和降序

    使用Statement数据库操作对象实现升序和降序 Statement可以使用在需要SQL语句拼接的情况下,因为在这样的情况下如果使用PreparedStatement就会给需要拼接的某个SQL关键字 ...

  4. python-冒泡排序,升序、降序

    冒泡排序 这个算法的名字由来是因为越大的元素会经交换慢慢浮'到数列的顶端. 冒泡排序的基本思想:重复走访要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来,直到没有再需要交换,完成排序 ...

  5. Java的数组和list升序,降序,逆序函数Collections.sort和Arrays.sort的使用

    list升序,降序,逆序List<Integer>list =new ArrayList<Integer>();//如果list是 5 7 2 6 8 1 41.升序:Coll ...

  6. DataGridView使用技巧十三:点击列头实现升序和降序排序

    DataGridView 列有三种排序模式.每一列的排序模式是通过该列的 SortMode 属性指定的,该属性可以设置为以下的 DataGridViewColumnSortMode 枚举值之一. Da ...

  7. LINQ中的OrderBy实现按照两个字段升序、降序排序操作

    在公司或许有这种需求,先根据第一个某个字段按照升序排序,然后如果相同,在按照第二个某个字降序排序,我们该怎么去实现呢? 现在来教教大家分别使用Labmda和LINQ进行这种操作. 1.先按照第一个字段 ...

  8. AngularJS table 按照表头字段排序功能(升序和降序)

    一.表格按照表头排序 <!doctype html> <html ng-app="a3_4"> <head> <title>表头排序 ...

  9. iOS之数组的排序(升序、降序及乱序)

    #pragma mark -- 数组排序方法(升序) - (void)arraySortASC{ //数组排序 //定义一个数字数组 NSArray *array = @[@(3),@(4),@(2) ...

随机推荐

  1. Linux下seq的使用

    seq - print a sequence of numbers [root@gechong ~]# man seq 主要有一下三个参数 -f:用来格式化输出 -s:用来指定分隔符号,默认是回车 - ...

  2. Castle.Windsor依赖注入的高级应用_Castle.Windsor.3.1.0

    [转]Castle.Windsor依赖注入的高级应用_Castle.Windsor.3.1.0 1. 使用代码方式进行组件注册[依赖服务类] using System; using System.Co ...

  3. Linux服务器 java生成的图片验证码乱码问题

    问题:如图所示项目中生成的图形验证码不能正常显示出需要的字体 原因:  linux下没有对应的字体 查找项目中使用到系统字体的地方,如下: 解决: 1. 在本地 路径 C:\Windows\Fonts ...

  4. js 原型链(转)

    1.1 理解原型链 JavaScript中几乎所有的东西都是对象,我们说数组是对象.DOM节点是对象.函数等也是对象,创建对象的Object也是对象(本身是构造函数),那么有一个重要的问题:对象从哪里 ...

  5. 安装oh my zsh和git插件

    http://macshuo.com/?p=676   --安装oh my zsh http://www.jianshu.com/p/9189eac3e52d https://github.com/r ...

  6. selenium 如何处理table

    qi_ling2005  http://jarvi.iteye.com/blog/1477837 andyguo  http://blog.csdn.net/gzh0222/article/detai ...

  7. maven pom文件详解

    http://www.blogjava.net/hellxoul/archive/2013/05/16/399345.html http://blog.csdn.net/houpengfei111/a ...

  8. 2 python大数据挖掘系列之淘宝商城数据预处理实战

    preface 在上一章节我们聊了python大数据分析的基本模块,下面就说说2个项目吧,第一个是进行淘宝商品数据的挖掘,第二个是进行文本相似度匹配.好了,废话不多说,赶紧上车. 淘宝商品数据挖掘 数 ...

  9. android 转屏 onConfigurationChanged 不会执行的问题

    参考 http://blog.csdn.net/tangzhilu/article/details/7399988 MainActivity 代码 package com.example.config ...

  10. Android开发学习笔记-自定义TextView属性模版

    如果项目中有很多个控件使用的是同一种样式,则为了方便,可以将样式设置到系统中去,这样使用的时候会方便很多. 下面是自定义样式模版的方法. 1.在style.xml文件中添加自己要设置的样式内容 < ...