博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#之IComparable用法,实现List<T>.sort()排序
阅读量:5277 次
发布时间:2019-06-14

本文共 2972 字,大约阅读时间需要 9 分钟。

这篇文章主要介绍了C#的一些基础知识,主要是IComparable用法,实现List<T>.sort()排序,非常的实用,这里推荐给大家。
 

 List<T>.sort()可以实现对T的排序,比如List<int>.sort()执行后集合会按照int从小到大排序。如果T是一个自定义的Object,可是我们想按照自己的方式来排序,那该怎么办呢,其实可以用过IComparable接口重写CompareTo方法来实现。流程如下:

      一.第一步我们申明一个类Person但是要继承IComparable接口:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace TestIComparable{    public class Person : IComparable
{ public string Name { get; set; } public int Age { get; set; } public int CompareTo(Person obj) { int result; if (this.Name == obj.Name && this.Age == obj.Age) { result = 0; } else { if (this.Name.CompareTo(obj.Name) > 0) { result = 1; } else if (this.Name == obj.Name && this.Age > obj.Age) { result = 1; } else { result = -1; } } return result; } public override string ToString() { return this.Name + "-" + this.Age; } }}

二.然后在主函数里面调用sort方法即可.类就会按照姓名从小到大,如果姓名相同则按照年龄从小到大排序了。

public class Program{    public static void Main(string[] args)    {        List
lstPerson = new List
(); lstPerson.Add(new Person(){ Name="Bob",Age=19}); lstPerson.Add(new Person(){ Name="Mary",Age=18}); lstPerson.Add(new Person() { Name = "Mary", Age = 17 }); lstPerson.Add(new Person(){ Name="Lily",Age=20}); lstPerson.Sort(); Console.ReadKey(); }}

三,如果不继承IComparable接口,我们该如何实现排序呢。可以使用Linq来实现。其实效果是一样的,只是如果类的集合要经常排序的话,建议使用继承接口的方法,这样可以简化sort的代码,而且更容易让人看懂。

public static void Main(string[] args)        {            List
lstPerson = new List
(); lstPerson.Add(new Person(){ Name="Bob",Age=19}); lstPerson.Add(new Person(){ Name="Mary",Age=18}); lstPerson.Add(new Person() { Name = "Mary", Age = 17 }); lstPerson.Add(new Person(){ Name="Lily",Age=20}); lstPerson.Sort((x,y) => { int result; if (x.Name == y.Name && x.Age == y.Age) { result = 0; } else { if (x.Name.CompareTo(y.Name) > 0) { result = 1; } else if (x.Name == y.Name && x.Age > y.Age) { result = 1; } else { result = -1; } } return result; }); Console.ReadKey(); }

 

转载于:https://www.cnblogs.com/lfxiao/p/6769234.html

你可能感兴趣的文章
推荐系统依据近期浏览进行推荐
查看>>
工厂模式IDAL具体解释
查看>>
UVA - 673 Parentheses Balance
查看>>
数据库编程规范
查看>>
如何修改eclipse里面Android虚拟机的存放路径
查看>>
爬虫作业
查看>>
微软职位内部推荐-Senior Software Engineer
查看>>
c++11 智能指针 unique_ptr、shared_ptr与weak_ptr
查看>>
JavaScript跨域总结与解决办法(转)
查看>>
正则匹配
查看>>
关于架构的思考
查看>>
poj 1149 PIGS【最大流】
查看>>
Array.from()
查看>>
struts2+spring3+hibernate3整合(二)转载
查看>>
JVM-运行时数据区
查看>>
(解决)mysql1366中文显示错误的终极解决方案
查看>>
使用enterTextInWebElement处理qq授权页报“网络异常,请稍后再试”的解决方法
查看>>
beta冲刺3
查看>>
Django中的缓存的配置与使用
查看>>
ASP.NET Core的配置(2):配置模型详解
查看>>