如何通过类实例的属性值对包含类对象的数组进行排序?

可能重复:
如何通过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。

您可以使用带有Comparison参数的Array.Sort重载:

 Array.Sort(myClassArray, delegate(MyClass x, MyClass y) { return x.Name.CompareTo(y.Name); }); 

让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();