如何按对象属性之一对对象的数组列表进行排序
本文关键字:对象 列表 数组 排序 何按 属性 | 更新日期: 2023-09-27 18:31:08
如何按对象属性之一对对象的 ArrayList 进行排序?
并且请不要建议任何与List<T>
有关的技术。对于我目前的软件,使用List<T>
是不可能的。
您需要
为实体实现IComparer
,例如:
public class MyClassComparer : IComparer<MyClass>
{
public int Compare(MyClass _x, MyClass _y)
{
return _x.MyProp.CompareTo(_y.MyProp);
}
}
并将其传递给 ArrayList.Sort 如下:
myArrayList.Sort(new MyClassComparer());
你必须实现自己的比较器,MSDN链接
这是一个使用 LinqPad 编写的示例,可以帮助您。松散地基于 MSDN 示例。
您只需要使用自己的类而不是此处使用的示例
void Main()
{
ArrayList al = new ArrayList();
al.Add(new Person() {Name="Steve", Age=53});
al.Add(new Person() {Name="Thomas", Age=30});
al.Sort(new PersonComparer());
foreach(Person p in al)
Console.WriteLine(p.Name + " " + p.Age);
}
class Person
{
public string Name;
public int Age;
}
class PersonComparer : IComparer
{
int IComparer.Compare( Object x, Object y )
{
if (x == null)
return (y == null) ? 0 : 1;
if (y == null)
return -1;
Person p1 = x as Person;
Person p2 = y as Person;
// Uncomment this to sort by Name
// return( (new CaseInsensitiveComparer()).Compare( p1.Name, p2.Name) );
return( p1.Age - p2.Age );
}
}