Ответ 1
Вы можете использовать перегрузку Array.Sort
, которая принимает Comparison<T>
:
Array.Sort(myClassArray,
delegate(MyClass x, MyClass y) { return x.Name.CompareTo(y.Name); });
Возможный дубликат:
Как отсортировать массив объекта по определенному полю в С#?
С учетом следующего кода:
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';
Как бы вы отсортировали массив MyClassArray [] в соответствии с свойством myClass.Name в алфавитном порядке, чтобы массив выглядел следующим образом:
myClassArray[0].Name //'James';
myClassArray[1].Name //'Jess';
myClassArray[2].Name //'John';
* Редактировать. Я использую VS 2005/.NET 2.0.
Вы можете использовать перегрузку Array.Sort
, которая принимает Comparison<T>
:
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();