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. 查看数据库中没有进行comment的字段

    为落实数据库规范,既每个表字段都需要有comment注释,所以需要过滤生产表中没有comment的字段,搜索出还不错的过滤语句 show full columns from table where C ...

  2. Android数据库 — — —查询数据

    package com.example.datebasetest; import android.content.ContentValues;import android.database.Curso ...

  3. HTML、CSS、JS在前端开发中都扮演怎样的角色

    前端开发,需要经常接触 HTML.DOM.CSS.JS等,那么HTML.CSS.JS在前端开发中究竟扮演怎样的角色呢?以下是个人的一些观点... HTML:超文本标记语言 (Hyper Text Ma ...

  4. [转]程序员自己写的神器 MonoDevelop 4 (Xamarin Studio) Debugging for Unity

    原文地址 http://www.cliffordroche.ca/monodevelop-4-xamarin-studio-debugging-in-unity/ MonoDevelop 4 (Xam ...

  5. 主要由顶点容器构成的平面图形类(Shape)——(第一次作业Draw类定义升级)

    // https://github.com/orocos/orocos_kinematics_dynamics/blob/master/orocos_kdl/src/frames.hpp // Vec ...

  6. 用Python3实现表达式求值

    一.题目描述 请用 python3 编写一个计算器的控制台程序,支持加减乘除.乘方.括号.小数点,运算符优先级为括号>乘方>乘除>加减,同级别运算按照从左向右的顺序计算. 二.输入描 ...

  7. UI1_第一天_iOS概述

    iOS:移动操作系统  ------------>ios7.0变化大,倾向于扁平化 UI:用户界面,即各种页面元素 创建工程 Xcode ios -->Application —>模 ...

  8. CGAL4.1在VS2010上配置

    配这个环境花了好几天的时间,虽然网上有很多相关的步骤,但是还是出了不少小错误,具体的步骤有很多,我就只记下我遇到的问题,我用的是CGAL4.1 boost1.51 CMake2.8 Qt4.8.2: ...

  9. 黑马程序员:Java编程_7K面试题之银行业务调度系统

    =========== ASP.Net+Android+IOS开发..Net培训.期待与您交流!=========== 模拟实现银行业务调度系统逻辑,具体需求如下: 银行内有6个业务窗口,1 - 4号 ...

  10. python-tab还是space?

    今天把windows下的python代码传到服务器上,结果莫名其妙的报了一堆indent的错误 网上建议说用: python -m tabnanny filename.py 查一下 然后就用space ...