如:一个ArrayList(MyList) 保存的是多个员工EmployeeInfo对象,EmployeeInfo中有age(年龄)这样的属性, 对MyList进行按年龄排序?
public class EmployeeInfo
{
public String _Name;
public int _Age;
public EmployeeInfo(String _Name, int _Age)
{
this._Name = _Name;
this._Age = _Age;
}
public string Name
{
get { return _Name; }
set { _Name = value; }
}
public int Age
{
get { return _Age; }
set { _Age = value; }
}
}
实现ICompare接口;
using System;
using System.Collections;
using System.Reflection;
public class Mycomparator : IComparer
{
public Mycomparator(){ }
int IComparer.Compare(Object o1, Object o2)
{
EmployeeInfo e1 = (EmployeeInfo)o1;
EmployeeInfo e2 = (EmployeeInfo)o2;
if (e1.Age < e2.Age)
return 1;
else if (e1.Age > e2.Age)
return -1;
else
return 0;
}
public static IComparer sortAgeAscending()
{
return (IComparer)new Mycomparator();
}
}
3。 具体使用
EmployeeInfo[] arra = new EmployeeInfo[]
{
new EmployeeInfo("张三", 58),
new EmployeeInfo("李四", 26),
new EmployeeInfo("王五", 71),
new EmployeeInfo("赵六", 19)
};
Array.Sort(arra, Mycomparator.sortAgeAscending());
string arr = null;
foreach(EmployeeInfo obj in arra)
{
arr += obj._Name + obj._Age + "<br />";
}
Response.Write(arr);