如何根据对象属性之一排序对象的ArrayList?
请不要建议任何与List<T>有关的技术。对于我目前的软件,使用List<T>是不可能的。
发布于 2014-11-20 15:26:59
您需要为您的实体实现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());发布于 2014-11-20 15:28:48
你必须实现你自己的比较器,MSDN链路
发布于 2014-11-20 15:31:11
这是一个使用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 );
}
}https://stackoverflow.com/questions/27043055
复制相似问题