如何通过类实例的属性值对包含类对象的数组进行排序?
可能重复:
如何通过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();