-
C#教程之C#教程之【转载】C#中自定义Sort的排序规则IComp
本站最新发布 C#从入门到精通
试听地址 https://www.xin3721.com/eschool/CSharpxin3721/
试听地址 https://www.xin3721.com/eschool/CSharpxin3721/
C#中的List集合在排序的时候,如果不使用Lambda表达式进行排序的话,一般调用Sort()方法进行排序,如果希望Sort()方法排序后的结果跟我们预想的效果一致或者按照我们自定义的规则排序,则需要将对应的实体继承IComparable接口来实现。
MSDN上给IComparable接口的定义为:定义由值类型或类实现的特定于类型的通用比较方法,旨在对其实例进行排序,使自建类的数组可以使用Array. Sort方法进行排序。自建类继承IComparable接口后,必须实现CompareTo方法,该方法参数是一个T类型的对象,返回值必须是-1,0,1中之一。
下面以一个例子来讲解这个自定义排序,我们定义一个Person人员类,该类包含Name和Age两个属性,要求在数组中调用Sort()方法排序的时候,按年龄Age属性从小到大排序,相应的实现如下代码所示:
class Person : IComparable { public Person(string name, int age) { Name = name; Age = age; } public string Name { get; set; } public int Age { get; set; } public int CompareTo(object obj) //实现该比较方法即可 { if (obj is Person) { Person p = obj as Person; return this.Age.CompareTo(p.Age); } else { throw new ArgumentException("Object to compare to is not a Person object"); } } }
然后我们写个控制台程序测试下上述的排序结果,测试程序如下:
static void Main(string[] args) { List<Person> personlist = new List<Person>(); personlist.Add(new Person("马六",89)); personlist.Add(new Person("张三",33)); personlist.Add(new Person("李四",3)); personlist.Add(new Person("王五", 244)); personlist.Sort(); foreach(Person p in personlist) { Console.Write("姓名:"+p.Name+" 年龄:"+p.Age); Console.Write("\n"); } Console.ReadKey(); }
运行之后,我们查看下输出的结果信息,完美的达到了我们预期的效果,输出的结果如下:
姓名:李四 年龄:3 姓名:张三 年龄:33 姓名:马六 年龄:89 姓名:王五 年龄:244
扩展阅读:目前国内主流的云服务器厂商有哪些_IT技术小趣屋。
备注:原文转载自C#中自定义Sort的排序规则IComparable接口_IT技术小趣屋。
栏目列表
最新更新
如何使用OS模块中的stat方法
Python os 模块
seek() 方法
python打开文件实例1
Python写入文件
什么是流?
文件操作如何进制逐行读取
Python相对路径
with创建临时运行环境
Python文件操作
.Net Standard(.Net Core)实现获取配置信息
Linux PXE + Kickstart 自动装机
Shell 编程 基础
Shell 编程 条件语句
CentOS8-网卡配置及详解
Linux中LVM逻辑卷管理
1.数码相框-相框框架分析(1)
Ubuntu armhf 版本国内源
Linux中raid磁盘阵列
搭建简易网站
access教程之Access简介
mysql 安装了最新版本8.x版本后的报错:
Mysql空间数据&空间索引(spatial)
如何远程连接SQL Server数据库的图文教程
复制SqlServer数据库的方法
搜索sql语句
sql中返回参数的值
sql中生成查询的模糊匹配字符串
数据定义功能
数据操作功能