C# 泛型集合的自定义类型排序
2021-03-17 15:24
标签:reac img 委托 处理 定义 今天 str 接下来 实现 一、泛型集合List 经sort方法之后,采用了升序的方式进行排列的。 二、对自定义类型进行排序 定义一个普通类: 接下来,将定义的Person实例化,排序; 结果如下: 在int类型中实现了IComparable,所以可以通过Sort()直接排序; int类型是实现了IComparable这个接口的。那么如果让自定义类型Person也可以排序,那么试试实现该接口; 那么将上面的代码修改一下看看 结果如下: 三、对集合按照多种不同规则进行排序 实际使用中,经常需要对集合按照多种不同规则进行排序,这就需要定义其他比较规则,可以在Compare方法中定义,该方法属于IComparer Compare方法的参数为要进行比较的两个同类型对象,返回值为int类型,返回值处理规则与CompareTo方法相同。其中的Comparer.Default返回一个内置的Comparer对象,用于比较两个同类型对象。 下面用新定义的这个比较器对集合进行排序: 结果如下: 四、使用linq进行排序 sort方法的一个重载是Comparison 那就看一下 Comparison 结果如下: 结果如下: 今天的分享就到这里了,好久没写过博客了,加班多,太忙了,抽空复习一下基础知识; C# 泛型集合的自定义类型排序 标签:reac img 委托 处理 定义 今天 str 接下来 实现 原文地址:https://www.cnblogs.com/guhuazhen/p/13972430.html Listint> list = new Listint>() { 2, 4, 1, 3, 5, -2, 0, 10 };
Console.Write("排序前...");
foreach (var item in list)
{
Console.Write(item + "\t");
}
list.Sort();
Console.WriteLine();
Console.WriteLine("排序后...");
foreach (var item in list)
{
Console.Write(item + "\t");
}
public class Person
{
public int Id { get; set; }
public string Name { get; set; }
}
List
public class Person:IComparable
{
public int Id { get; set; }
public string Name { get; set; }
public int CompareTo(object obj)
{
Person p = obj as Person;
return this.Id.CompareTo(p.Id);
}
}
public class PersonNameDesc : IComparer
//================对集合按照多种不同规则进行排序=========================
List list = new List
List
List