一、升序、降序

其实C#中的List的Sort函数中的比较函数CompareTo有三种结果 1, -1 ,0分别代表大,小,相等。默认List的排序是升序排序。

举个例子:在比较函数CompareTo()中,如果 x>y return 1;则是按照升序排列。如果x>y return -1;则是按照降序排列。这就是1和-1大小的含义。其实你非要这么写 x<y return 1;则也表示降序排列。不过大家一般习惯x>y return 1;升序,如果想要降序只需return -1;即可。

Tips:系统List默认的排序是升序,如果你想要降序,可以直接在比较函数前面加个负号,把返回结果由1变成-1即可。例如:

List<int> list = new List<int>() { 2, 1, 3, 4 };
list.Sort((x, y) => -x.CompareTo(y));
Console.WriteLine(list); //4,3,2,1

二、对于非数值类型、string等或者官方未来实现IComparable接口的类型,可通过实现IComparable接口重写CompareTo方法来排序。
举个例子:自定义一个类,然后继承字: IComparable<>,然后实现接口的方法 int CompareTo(object obj_)就可以了

 public class Person : IComparable<Person>{public int id;public string name;public Person(){id = 0;name = "name";}public Person(int id_, string name_){id = id_;name = name_;}public int CompareTo(Person obj_){if (this.id > obj_.id)return 1;elsereturn -1;}}

三、多权重排序
其实就是对优先级最高的字段进行排序,然后在对次级优先级的字段进行排序就可以了。例如对Persond的对象先进行ID排序,然后再进行Name排序:

public int CompareToIDName(Person x_, Person y_){if (x_.id > y_.id)return 1;else if (x_.id == y_.id){return x_.name.CompareTo(y_.name);}elsereturn -1;}

四、使用匿名函数来实现Comparison
虽然想实现排序上面的接口代码也不多,但有时候只是偶尔排序,并不想修改类,怎么办呢?当然有更简单的方法,委托和lambda表达式:

public void Init(){m_personList.Add(new Person(10001, "Zhao"));m_personList.Add(new Person(10006, "Qian"));m_personList.Add(new Person(10006, "Zhao"));m_personList.Add(new Person(10004, "Li"));m_personList.Add(new Person(10006, "Zhao"));m_personList.Sort();m_personList.Sort(delegate (Person x, Person y){if (x.id > y.id)return 1;elsereturn -1;});m_personList.Sort((x, y) =>{return x.name.CompareTo(y.name);});m_personList.Sort((x, y) => CompareToIDName(x, y));}

**List笔记
List赋值到另一个List的方法,进行AddRange。

List的Sort 函数CompareTo升序降序排序相关推荐

  1. 用计算机怎么排列名次,excel如何用RANK函数做升序降序排序排名

    操作方法 01rank函数是排名函数.rank函数最常用的是求某一个数值在某一区域内的排名.rank函数语法形式:rank(number,ref,[order]) number 为需要求排名的那个数值 ...

  2. PHP中 如何将二位数组按某一个或多个字段值(升序/降序)排序?数字索引被重置,关联索引保持不变...

    如何将二位数组按某一个或多个字段值(升序/降序)排序?数字索引被重置,关联索引保持不变 1.$arr=array( 2. array('id'=>1,'name'=>'will','age ...

  3. Java中使用sort()进行升序降序排序

    这篇文章主要介绍了详解Java sort()数组排序(升序和降序),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 我们在学习 J ...

  4. js对象、数组对象根据属性值进行升序降序排序

    1.js对象排序 // 排序之前 let objs = {f: {id: 2,name: '2'},a: {id: 3,name: '3'},c: {id: 1,name: '1'} }// 根据对象 ...

  5. js:数组对象按key值进行升序降序排序

    1.先定义一个数组对象 let arr=[{name:'李欣',age:'18'},{name:'王钊',age:'15'},{name:'李雪',age:'20'},{name:'李逍遥',age: ...

  6. 升序降序排序测试方法

    升序排序指的是将数据从小到大排列,而降序排序则相反,将数据从大到小排列. 常用的升降序排序方法有:冒泡排序.选择排序.插入排序.快速排序等. 为了测试排序算法的正确性,可以使用一组已知的数据作为测试数 ...

  7. 二位数组按某一个或多个字段值(升序/降序)排序

    输出结果: 转载于:https://www.cnblogs.com/573583868wuy/p/5229307.html

  8. c语言用指针升序降序,C语言函数序——升序降序.doc

    C语言函数序--升序降序 锥澳袁逻吸逛厢懈来厉昏跺荒蓬动钱育琴由兆扇侵绕抑秘什淘缘辰秤戚觅咯徐创军火获敦呆劈阶们亮陈呢脚褒轧芬钎禄糕则亥毕烦百槛贷饰嚏岁弱丫詹镭嘉磨倦恼长迹蜡科省佣要戒鞘病苞瘩迟右澈凭 ...

  9. C# List.sort排序详解(多权重,升序降序)

    很多人可能喜欢Linq的orderBy排序,可惜U3D里面linq在Ios上会报错,所以就必须使用list的排序. 其实理解了并不难 升序降序比较 sort有三种结果 1,-1,0分别是大,小,相等. ...

最新文章

  1. Android开发历程_18(XML文件解析)
  2. Idea 2018.2.5创建springboot项目依赖包没有的错误
  3. 简易版用户画像,你需要掌握这3个数据处理方法
  4. AXURE在原型设计中的应用
  5. dubbo服务降级与限流
  6. Jquery 小技巧
  7. 《设计模式详解》创建型模式 - 单例模式
  8. nginx root与alias区别
  9. 2019年DNS服务器速度测评【DNS速度排名】
  10. 怎么在电脑设置html,电脑怎么定时开机
  11. cmdb 指南_无限供应商制造商指南
  12. commons-math3-3.6.1-org.apache.commons.math3.analysis.function-包下的类(二)-中英对照文档及源码赏析
  13. win10设置任务栏图标长短
  14. WordPress插件教程-WPS Hide Login更改后台登录地址
  15. ESP8266远程控制LED
  16. Centos 鼠标左键突然失灵问题与解决
  17. Linux_第1章 Linux入门
  18. ROE指标的正确使用方法
  19. 游戏开发中的物理介绍
  20. java判断php的emoji,php 过滤emoji

热门文章

  1. 小熊美家上线法大大,电子合同创新家政数字化
  2. 微信公众号配置自定义菜单跳转小程序,自动回复跳转小程序
  3. 从SOD到OOD(AutoFocus模块)
  4. OpenCV图像处理专栏十七 | 清华大学《基于单幅图像的快速去雾》C++复现(有一定工程意义)
  5. java连接zookeeper报错问题“KeeperErrorCode = ConnectionLoss”
  6. 物联网典型的四层架构分析
  7. java随机出题_如何用Java实现随机出题?
  8. Bulter-Volmer 方程推导 Tafel斜率
  9. python力扣刷题记录——204. 计数质数
  10. 猎豹android浏览器内核,猎豹浏览器下载-猎豹浏览器 安卓版v5.25.0-PC6安卓网