可能重复:
How to sort an array of object by a specific field in C#?
给出以下代码:
MyClass myClass;
MyClassArray[] myClassArray = new MyClassArray[10];
for(int i; i < 10; i++;)
{
myClassArray[i] = new myClass();
myClassArray[i].Name = GenerateRandomName();
}
最终结果可能如下所示:
myClassArray[0].Name //'John';
myClassArray[1].Name //'Jess';
myClassArray[2].Name //'James';
如何根据myClass.Name属性按字母顺序对MyClassArray []数组进行排序,以便最后数组看起来像这样:
myClassArray[0].Name //'James';
myClassArray[1].Name //'Jess';
myClassArray[2].Name //'John';
*编辑:我正在使用VS 2005 / .NET 2.0。
答案 0 :(得分:24)
您可以使用带有Array.Sort
参数的Comparison<T>
重载:
Array.Sort(myClassArray,
delegate(MyClass x, MyClass y) { return x.Name.CompareTo(y.Name); });
答案 1 :(得分:11)
让MyClass实现IComparable接口,然后使用Array.Sort
这样的东西适用于CompareTo(假设Name属性具有类型字符串)
public int CompareTo(MyClass other)
{
return this.Name.CompareTo(other.Name);
}
或者只是简单地使用Linq
MyClass[] sorted = myClassArray.OrderBy(c => c.Name).ToArray();