c# List的排序
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的排序的更多相关文章
- javascript中的Array对象 —— 数组的合并、转换、迭代、排序、堆栈
Array 是javascript中经常用到的数据类型.javascript 的数组其他语言中数组的最大的区别是其每个数组项都可以保存任何类型的数据.本文主要讨论javascript中数组的声明.转换 ...
- iOS可视化动态绘制八种排序过程
前面几篇博客都是关于排序的,在之前陆陆续续发布的博客中,我们先后介绍了冒泡排序.选择排序.插入排序.希尔排序.堆排序.归并排序以及快速排序.俗话说的好,做事儿要善始善终,本篇博客就算是对之前那几篇博客 ...
- JavaScript实现常用的排序算法
▓▓▓▓▓▓ 大致介绍 由于最近要考试复习,所以学习js的时间少了 -_-||,考试完还会继续的努力学习,这次用原生的JavaScript实现以前学习的常用的排序算法,有冒泡排序.快速排序.直接插入排 ...
- [C#][算法] 用菜鸟的思维学习算法 -- 马桶排序、冒泡排序和快速排序
用菜鸟的思维学习算法 -- 马桶排序.冒泡排序和快速排序 [博主]反骨仔 [来源]http://www.cnblogs.com/liqingwen/p/4994261.html 目录 马桶排序(令人 ...
- 算法与数据结构(十三) 冒泡排序、插入排序、希尔排序、选择排序(Swift3.0版)
本篇博客中的代码实现依然采用Swift3.0来实现.在前几篇博客连续的介绍了关于查找的相关内容, 大约包括线性数据结构的顺序查找.折半查找.插值查找.Fibonacci查找,还包括数结构的二叉排序树以 ...
- 算法与数据结构(七) AOV网的拓扑排序
今天博客的内容依然与图有关,今天博客的主题是关于拓扑排序的.拓扑排序是基于AOV网的,关于AOV网的概念,我想引用下方这句话来介绍: AOV网:在现代化管理中,人们常用有向图来描述和分析一项工程的计划 ...
- 使用po模式读取豆瓣读书最受关注的书籍,取出标题、评分、评论、题材 按评分从小到大排序并输出到txt文件中
#coding=utf-8from time import sleepimport unittestfrom selenium import webdriverfrom selenium.webdri ...
- javascript排序
利用array中的sort()排序 w3cfunction sortNumber(a,b) { return a - b } var arr = new Array(6) arr[0] = " ...
- iOS自定义model排序
在开发过程中,可能需要按照model的某种属性排序. 1.自定义model @interface Person : NSObject @property (nonatomic,copy) NSStri ...
- Lucene4.4.0 开发之排序
排序是对于全文检索来言是一个必不可少的功能,在实际运用中,排序功能能在某些时候给我们带来很大的方便,比如在淘宝,京东等一些电商网站我们可能通过排序来快速找到价格最便宜的商品,或者通过排序来找到评论数最 ...
随机推荐
- sqlserver查看所有的外键约束
select a.name as 约束名, object_name(b.parent_object_id) as 外键表, d.name as 外键列, object_name(b.reference ...
- windows 下安装redis并且测试(php)
Window 下安装 下载地址:https://github.com/dmajkic/redis/downloads. 下载到的Redis支持32bit和64bit.根据自己实际情况选择,将64bit ...
- 移动混合开发之HTML5在移动开发中的准则
1.尽量单页面开发 2.慎重选择前端UI框架,新手最好自己动手. 3.动画特效达到60fps 4.长度单位是用rem,即字体的宽度,字体宽度可根据 window.width/number.
- Outlook不能预览和打开Excel文件:
无法打开Outlook邮箱中的Excel附件,确实让人恼火 先不要着急: 1.在开始->运行,输入"regedit" 2.找到路径:HKEY_CURRENT_USER\Sof ...
- 使用crosswalk优化ionic2应用包
ionic plugin add cordova-plugin-crosswalk-webview --save
- linux下内存泄露检测工具Valgrind介绍
目前在linux开发一个分析实时路况的应用程序,在联合测试中发现程序存在内存泄露的情况. 这下着急了,马上就要上线了,还好发现了一款Valgrind工具,完美的解决了内存泄露的问题. 推荐大家可以使用 ...
- yii2从零开始一,安装
1.官网下载软件包 这里选择普通包,也可以是增强包 2.运行basic目录下 requirements.php ,查看环境是否符合要求,yii2要求php5.4以上 3.运行 basic/web下in ...
- 微信支付curl出错及错误码解决方案
1. curl错误码6 出现场景 PHP Fatal error: Uncaught exception 'WxPayException' with message 'curl出错,错误码:6' in ...
- [转]IoC模式
IoC模式 1.依赖 依赖就是有联系,有地方使用到它就是有依赖它,一个系统不可能完全避免依赖.如果你的一个类或者模块在项目中没有用到它,恭喜你,可以从项目中剔除它或者排除它了,因为没有一个地方会依赖它 ...
- redis 数据结构一 之t_string
简介 REDIS有非常丰富的数据结构 以及建立在这数据结构上的操作,在源文件中主要集中在 T_hash.c /T_list.c /T_string.c/T_zset.c 可以说读懂了这4个源文件 大 ...