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<Person>
{
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<Person> lstPerson = new List<Person>();
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<Person> lstPerson = new List<Person>();
lstPerson.Add(new Person(){ Name="Bob",Age=});
lstPerson.Add(new Person(){ Name="Mary",Age=});
lstPerson.Add(new Person() { Name = "Mary", Age = });
lstPerson.Add(new Person(){ Name="Lily",Age=}); lstPerson.Sort((x,y) =>
{
int result;
if (x.Name == y.Name && x.Age == y.Age)
{
result = ;
}
else
{
if (x.Name.CompareTo(y.Name) > )
{
result = ;
}
else if (x.Name == y.Name && x.Age > y.Age)
{
result = ;
}
else
{
result = -;
}
} return result;
});
Console.ReadKey();
}

C#基础---IComparable用法,实现List<T>.sort()排序的更多相关文章

  1. C#之IComparable用法,实现List<T>.sort()排序

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

  2. List<T>.Sort() 排序的用法

    List<T> 可以通过 .Sort()进行排序,但是当 T 对象为自定义类型时(比如自定义模型),就需要 IComparable接口重写其中的方法来实现,实现代码如下: class Pr ...

  3. js数组之sort排序的用法

    sort排序 转载自:https://blog.csdn.net/idomyway/article/details/80544509 js中用方法sort()为数组排序.sort()方法有一个可选参数 ...

  4. Linux基础第六课——grep|awk|sort|uniq

    管道符 | 前面的输出作为后面的输入 grep 可以理解为正则表达式 grep [参数] 文件名 -c 打印符合要求的行数 -v 打印不符合要求的行 -n 在输出符合要求的行的同时连同行号一起输出 - ...

  5. STL中排序函数的用法(Qsort,Sort,Stable_sort,Partial_sort,List::sort)

    都知道排序很重要,也学了各式各样的排序算法,冒泡.插入.归并等等,但其实在ACM比赛中,只要不是太慢的算法,都可以适用(除非某些题目卡时间卡的很死),这个时候,速度与技巧便成了关键,而在C++的标准库 ...

  6. js sort() 排序用法(转载)

    原文:https://blog.csdn.net/m0_37885651/article/details/80016718 sort() 方法用于对数组的元素进行排序,并返回数组.默认排序顺序是根据字 ...

  7. 小试牛刀之sort()排序的实现

    受大学室友的鼓动,我也打算利用公众平台来记录自己的前端知识积累,同时呢,自己总结的东西,总归会有局限性,希望小伙伴能给我指点迷津.知识就是一张巨大的网,作为一名摸不清头绪的入学者,唯一能做的事情就是吐 ...

  8. 反向输出及sort排序

    建立条件:#include "algorithm"引用这个头文件 1.reverse 的用法,反向排序,由自己输入5个数: 1 2 3 4 5 for (int i = 0; i ...

  9. javascript:算法之数组sort排序

    数组sort排序 sort比较次数,sort用法,sort常用 描述 方法sort()将在原数组上对数组元素进行排序,即排序时不创建新的数组副本.如果调用方法sort()时没有使用参数,将按字母顺序( ...

随机推荐

  1. JPA persistence

    Play provides a set of very useful helpers to simplify the management of your JPA entities. Note tha ...

  2. Code First :使用Entity. Framework编程(2) ----转发 收藏

    第二章:Code First概览 如果你使用第一.二版的EF框架工作过,你会回想起书中的业务案例:Break Away Geek Adventures, 简称BAGA.BAGA共享了很多像我们这样的奇 ...

  3. mongodb系列3 mongo mongoskin 连接以及连接数的问题进阶

    1)使用mongodb连接mongo var mongo = require('mongodb'), //引入mongodb dbHost = '127.0.0.1', dbPort = 27017; ...

  4. javascript 不响应可能是引用外部javascript时,引用顺序不对。

    有相互引用关系的js,要最后执行的方法所在的js 先被引用. a.js 中有function1 b.js 中有function2 function1 () { function2(){} } 要 &l ...

  5. 为Sharepoint 2010 批量创建SharePoint测试用户

    无意搜到下面一篇文章,http://www.cnblogs.com/lambertqin/archive/2012/04/19/2457372.html,原作者写的太"高大上",可 ...

  6. ae专题图

    点密度图.分层设色图/等级图.单值图.柱状图.饼状图的实现代码 C# private void 点密度图ToolStripMenuItem_Click(object sender, EventArgs ...

  7. android键盘弹出头部上移处理

    <ScrollView android:id="@+id/top_bar" android:layout_width="fill_parent" andr ...

  8. 腾讯bugly团队提供的android国内镜像

    腾讯bugly团队提供的国内镜像   如果使用Android SDK Manager下载比较慢或者打不开,可以使用国内镜像 使用说明 http://android-mirror.bugly.qq.co ...

  9. Jquery分页功能

    Jquery代码 /// <reference path="jquery-1.9.1-vsdoc.js" />//锚点var anchor="#apage&q ...

  10. Android 手机卫士--签名文件说明&包名说明

    在<Android 手机卫士--打包生成apk维护到服务器>一文中,实现了新版本的apk到服务器,当打开客户端apk的时候,发现有新版本,提示更新.还实现了利用xutils工具实现了从服务 ...