Подтвердить что ты не робот

Как отсортировать массив, содержащий объекты класса, по значению свойства экземпляра класса?

Возможный дубликат:
Как отсортировать массив объекта по определенному полю в С#?

С учетом следующего кода:

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.

4b9b3361

Ответ 1

Вы можете использовать перегрузку Array.Sort, которая принимает Comparison<T>:

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

Ответ 2

Попросите 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();