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

Возможный дубликат:

Как отсортировать массив объектов по определенному полю в 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';

Как бы вы отсортировали массив MyClassArray [] в соответствии со свойством myClass.Name по алфавиту, чтобы в итоге массив выглядел так:

myClassArray[0].Name //'James';
myClassArray[1].Name //'Jess';
myClassArray[2].Name //'John';

*Редактировать: Ям с использованием VS 2005 / .NET 2.0.

 Shog922 авг. 2009 г., 00:00
Что-то вроде того. :-)
 Jon Skeet20 авг. 2009 г., 08:26
Точное дублированиеstackoverflow.com/questions/1301822
 Joe M02 мар. 2016 г., 17:55
Это неМне кажется, что это дубликат, хотя названия схожи, потому что другой вопрос на самом деле касается списков, а не массивов. Принятый ответ - использование функций Linq и List, которых нет в массивах. Принятый ответ - вот что сработало для меня, тогда как эти ответы не моглит.
 Mr. Smith21 авг. 2009 г., 23:45
Не хватает крови в потоке никотина, а, Сег? :)
 Shog921 авг. 2009 г., 20:26
Что ж,судя по всему, Это'Это то же самое. Если ты'Если вы будете оспаривать дубликат флага, то, по крайней мере, будьте готовы объяснить, почему ваш вопрос отличается от ранее заданного, и почему ответы на этот вопрос выиграли »не поможет вам в вашей ситуации. Иначе, чтоСмысл?
 Mr. Smith20 авг. 2009 г., 08:30
Это'не то же самое, насколько яЯ обеспокоен.

Ответы на вопрос(2)

IComparable интерфейс, а затем использоватьArray.sort

Примерно так будет работать для CompareTo (при условии, что свойство Name имеет тип string)

public int CompareTo(MyClass other)
{
    return this.Name.CompareTo(other.Name);
}

Или просто используя Linq

MyClass[] sorted = myClassArray.OrderBy(c => c.Name).ToArray();
Решение Вопроса

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

Array.Sort(myClassArray,
    delegate(MyClass x, MyClass y) { return x.Name.CompareTo(y.Name); });
 Mr. Smith20 авг. 2009 г., 21:01
Отлично, спасибо Люк.
 Umamaheswaran01 апр. 2013 г., 13:25
Мне нужно то же самое, но в порядке убывания, просто отрицал результат возврата. все работало нормально :)

Ваш ответ на вопрос