list 是我们常用到的数据类型,我们常常会用list去处理很多的数据。我们也常常会有这样的一个操作,就是排序sort

list 所在的命名空间是System.Collections.Generic

排序的方式

一 对于基本的数据类型,本身又icompare的继承的我们可以直接使用list.sort();进行升序排列。不需要做任何操作

  如 我们定义

    List<int> testList = new List<int>();
    testList.Add(2);
    testList.Add(1);
          testList.Add(3);
          testList.Add(4);
          testList.Add(5);
          testList.Add(0);

直接使用testList.sort();就能得到 012345的序列

二 自己定义比较方法,这是我比较常用的,可以对多个条件进行比较,很容易进行扩展

private int SortList(int a,int b) //a b表示列表中的元素

{

  if(a > b) //这边的比较可以是任意的类型,只要是你可以比较的东西,比如student类中的年龄age stu1.age > stu2.age

  {
    return 1;

  }

  else  if (a < b)

  {

    return -1;

  } 

return 0; 

}

  最后我们调用的时候testList.sort(SortList);

三 当比较的排序项比较少甚至是一个的时候我们可以直接不写出函数然后直接使用,如下

  testList.sort((int a,int b) => { return a>b ? 1 : -1;});  其中 =>是一种匿名委托。跟定义delegate写的方式一样,也和第二种是类似的。

最近使用的时候发现这种写法只返回1 和-1 是存在问题的。

  http://blog.csdn.net/qq276592716/article/details/7932483 这里贴上c++ stl中sort的排序算法增加理解

  他不一定会给你排出你想要的顺序,因为他的内部会分多集合去相互比较,还是回出现return 0的结果

  

testList.sort((int a,int b) => { 这里还是用if来把3中结果都判定出来})。

四 使用OrderBY/OrderByDescending选择的方式做升/降序排列

    testList = testList.OrderBy(u=>u).ToList(); //其中u也是隐藏写法,因为我们没有需要调用的,直接用自己比较就直接这样比较久可以了。

   如果里面的项是一个class。比如上面说的Student类,那么我们可以这样

    testList = testList.OrderBy(u=>u.age).ToList(); //这样我们也把他进行了一次排序

基本上就是使用这几种方式就可以完整的做好排序工作。

但愿前面看到的朋友没有被误导,如果有表示抱歉,现已经更正.

    

  

c# List的排序的更多相关文章

  1. javascript中的Array对象 —— 数组的合并、转换、迭代、排序、堆栈

    Array 是javascript中经常用到的数据类型.javascript 的数组其他语言中数组的最大的区别是其每个数组项都可以保存任何类型的数据.本文主要讨论javascript中数组的声明.转换 ...

  2. iOS可视化动态绘制八种排序过程

    前面几篇博客都是关于排序的,在之前陆陆续续发布的博客中,我们先后介绍了冒泡排序.选择排序.插入排序.希尔排序.堆排序.归并排序以及快速排序.俗话说的好,做事儿要善始善终,本篇博客就算是对之前那几篇博客 ...

  3. JavaScript实现常用的排序算法

    ▓▓▓▓▓▓ 大致介绍 由于最近要考试复习,所以学习js的时间少了 -_-||,考试完还会继续的努力学习,这次用原生的JavaScript实现以前学习的常用的排序算法,有冒泡排序.快速排序.直接插入排 ...

  4. [C#][算法] 用菜鸟的思维学习算法 -- 马桶排序、冒泡排序和快速排序

    用菜鸟的思维学习算法 -- 马桶排序.冒泡排序和快速排序 [博主]反骨仔 [来源]http://www.cnblogs.com/liqingwen/p/4994261.html  目录 马桶排序(令人 ...

  5. 算法与数据结构(十三) 冒泡排序、插入排序、希尔排序、选择排序(Swift3.0版)

    本篇博客中的代码实现依然采用Swift3.0来实现.在前几篇博客连续的介绍了关于查找的相关内容, 大约包括线性数据结构的顺序查找.折半查找.插值查找.Fibonacci查找,还包括数结构的二叉排序树以 ...

  6. 算法与数据结构(七) AOV网的拓扑排序

    今天博客的内容依然与图有关,今天博客的主题是关于拓扑排序的.拓扑排序是基于AOV网的,关于AOV网的概念,我想引用下方这句话来介绍: AOV网:在现代化管理中,人们常用有向图来描述和分析一项工程的计划 ...

  7. 使用po模式读取豆瓣读书最受关注的书籍,取出标题、评分、评论、题材 按评分从小到大排序并输出到txt文件中

    #coding=utf-8from time import sleepimport unittestfrom selenium import webdriverfrom selenium.webdri ...

  8. javascript排序

    利用array中的sort()排序 w3cfunction sortNumber(a,b) { return a - b } var arr = new Array(6) arr[0] = " ...

  9. iOS自定义model排序

    在开发过程中,可能需要按照model的某种属性排序. 1.自定义model @interface Person : NSObject @property (nonatomic,copy) NSStri ...

  10. Lucene4.4.0 开发之排序

    排序是对于全文检索来言是一个必不可少的功能,在实际运用中,排序功能能在某些时候给我们带来很大的方便,比如在淘宝,京东等一些电商网站我们可能通过排序来快速找到价格最便宜的商品,或者通过排序来找到评论数最 ...

随机推荐

  1. kanboard邮件通知

    1. 复制config.default.php为config.php 2. 修改一下内容 define('MAIL_TRANSPORT', 'smtp');define('MAIL_SMTP_HOST ...

  2. think in java学习笔记

    java作用域关键字: public:任何人均可使用 private:除您自己.类型的创建者以及那个类型的内部函数成员,其他任何人都不能访问 protected:只有继承的类可以访问 friendly ...

  3. 本地mysql数据库root密码丢失修改方法

      1,停止数据库 2,cd /etc/mysql 3,利用vim命令打开mysql配置文件my.cnf,在mysqld进程配置文件中添加skip-grant-tables,添加完成后,执行wd保存. ...

  4. 绝不在构造和析构函数中调用 virtual 函数

    看下面的这段代码,问 print调用的是基类还是派生类的版本? 答案是 基类... 可能大家会很惊讶,print不是virtual function 吗?为什么不是调用派生类的版本呢? 首先,当定义一 ...

  5. SQL盲注之正则攻击

    我们都已经知道,在MYSQL 5+中 information_schema库中存储了所有的 库名,表明以及字段名信息.故攻击方式如下: 1. 判断第一个表名的第一个字符是否是a-z中的字符,其中bli ...

  6. C#常用操作类库一(验证类)

    public class Validator    {        #region  验证输入字符串为数字        /// <summary>        /// 验证输入字符串 ...

  7. Linux系统下远程文件拷贝scp命令

    在Linux系统下,不同机器上实现文件拷贝 一.将本地文件拷贝到远程机器: scp /home/administrator/news.txt root@192.168.6.129:/etc/squid ...

  8. 浅析JSONP-解决Ajax跨域访问问题

    浅析JSONP-解决Ajax跨域访问问题 很久没有写随笔了,总是感觉没时间,其实时间就是...废话少说,前几天,工作上有一新需求,需要前端web页面异步调用后台的Webservice方法返回信息.实现 ...

  9. iOS--UIView和UIWindow用法

    基础 UI(user interface)是用户界面:iOS的应用是由各种各样的UI控件组成 UIWindow就是一个窗口,学的第一个基础类,就是一个容器,可以在容器上放不同的内容,每个app都需要借 ...

  10. eclipse界面混乱

    在eclipse最右边点击Java----reset