C# 中list的排序
来源:互联网 发布:puppy linux安装到u盘 编辑:程序博客网 时间:2024/05/16 06:46
将list中的元素按照某种规则排序是件很平常的事,今天在网上搜了下,竟然没有好的解决方法。
后来发现list本身含sort方法,并支持自定义排序规则。
现有类A,含三个属性,分别是NO,AGE,NAME,现在要求按照这个顺序排序(既先比较NO,如果相同比较AGE,如果AGE相同就比较NAME)。
类A的代码:
类A
class A
{
private string _name;
public string NAME
{
get { return _name; }
set { _name = value; }
}
private int _age;
public int AGE
{
get { return _age; }
set { _age = value; }
}
private int _no;
public int NO
{
get { return _no; }
set { _no = value; }
}
public A(int no, int age, string name)
{
this.NO = no;
this.AGE = age;
this.NAME = name;
}
}
{
private string _name;
public string NAME
{
get { return _name; }
set { _name = value; }
}
private int _age;
public int AGE
{
get { return _age; }
set { _age = value; }
}
private int _no;
public int NO
{
get { return _no; }
set { _no = value; }
}
public A(int no, int age, string name)
{
this.NO = no;
this.AGE = age;
this.NAME = name;
}
}
先定义排序规则:
代码:排序规则
private static int SortA(A a1, A a2)
{
if (a1.NO.CompareTo(a2.NO) != 0)
return a1.NO.CompareTo(a2.NO);
else if (a1.AGE.CompareTo(a2.AGE) != 0)
return a1.AGE.CompareTo(a2.AGE);
else
return a1.NAME.CompareTo(a2.NAME);
}
{
if (a1.NO.CompareTo(a2.NO) != 0)
return a1.NO.CompareTo(a2.NO);
else if (a1.AGE.CompareTo(a2.AGE) != 0)
return a1.AGE.CompareTo(a2.AGE);
else
return a1.NAME.CompareTo(a2.NAME);
}
测试排序规则:
代码:测试排序
static void Main(string[] args)
{
List<A> list = new List<A>();
list.Add(new A(20, 20, "00001"));
list.Add(new A(18, 50, "00003"));
list.Add(new A(20, 19, "00004"));
list.Add(new A(21, 21, "00005"));
list.Add(new A(19, 19, "00006"));
list.Add(new A(99, 19, "00007"));
list.Add(new A(19, 19, "00008"));
list.Add(new A(38, 50, "00009"));
list.Sort(SortA);
foreach (A a in list)
{
Console.WriteLine(a.NO + " " + a.AGE + " " + a.NAME);
}
Console.ReadLine();
}
{
List<A> list = new List<A>();
list.Add(new A(20, 20, "00001"));
list.Add(new A(18, 50, "00003"));
list.Add(new A(20, 19, "00004"));
list.Add(new A(21, 21, "00005"));
list.Add(new A(19, 19, "00006"));
list.Add(new A(99, 19, "00007"));
list.Add(new A(19, 19, "00008"));
list.Add(new A(38, 50, "00009"));
list.Sort(SortA);
foreach (A a in list)
{
Console.WriteLine(a.NO + " " + a.AGE + " " + a.NAME);
}
Console.ReadLine();
}
输出结果正常,证明方法有效.
注意,上面测试代码调用很简单,就是list.Sort(SortA); 就可以了。
其实这是用委托表示的方法对 List 的元素进行排序。内部实现则为QuickSort 算法。
- C# 中list的排序
- C#中List的排序
- C#中List的排序
- C#中List的排序用法(Sort)
- C#中List的排序用法(Sort)
- C#中List的排序用法(Sort)
- C#中List的排序用法(Sort)
- C#中List的排序(Sort)
- C#中List的排序(Sort)
- C#中List<>的排序使用
- C# list的排序
- C#的List排序
- c# 中 List能对T对象排序的方法
- C#中List<T>的排序用法(Sort)
- C# 实现List实例中实例元素的排序
- C# List的排序问题
- Java中List的排序
- Java中List的排序
- 在C#中使用MSHTML的高级支持接口
- vmlinux, zImage, Image的区别
- 实现小数据量和海量数据的通用分页显示存储过程
- 非连续所以的index by表如何遍历
- 何时在声明函数时使用EXTERNAL
- C# 中list的排序
- start_kernel->setup_arch->paging_init->bootmem_init() 之 2
- linux 串口概述
- Google网站翻译工具:帮您扩大全球受众群
- tomcat + cas_server + cas_client_official
- ubuntu 系统解决mysql连接问题(ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO))
- 程序员之路
- OpenGL材质和光照(转)part2
- 两大实时数据库的接口区别