Сортировка массива по типу объекта по одному из значений объекта - PullRequest
0 голосов
/ 09 октября 2010

У меня есть класс с именем студента, у класса есть два элемента (Имя, ID).в моем основном классе я создал около 10 учеников в массиве, который я назвал учениками,

, теперь я хочу отсортировать массив учеников, соответствующий идентификатору, или имени !!

, еслия использовал эту строку кода

array.sort(students);

есть ли способ использовать метод сортировки и выбрать элемент, с которым я хочу отсортировать массив ???

Ответы [ 5 ]

1 голос
/ 09 октября 2010

Если это массив, самый эффективный способ - использовать Array.Sort:

Array.Sort(array, (s1, s2) => s1.Name.CompareTo(s2.Name));
1 голос
/ 09 октября 2010

Я бы использовал для этого список.

List<Student> students = new List<Student>{ new Student(), new Student(), new Student() }

, затем отсортировал бы этот список с помощью LINQ

var sortedStuds = students.OrderBy(s => s.ID).ToList();

, где s - это Student объект

1 голос
/ 09 октября 2010

Вы можете использовать что-то вроде этого:

Array.Sort(array, (s1, s2) => s1.Name.CompareTo(s2.Name));

Вы можете определить функцию сравнения, однако вы хотите получать различные порядки сортировки.

0 голосов
/ 09 октября 2010

Хотя я также предпочитаю решение LINQ, в качестве альтернативы вы можете сделать так, чтобы ваш класс Student реализовал IComparable, который мог бы дать вам более сложные варианты сортировки без необходимости писать встроенную функцию каждый раз.

0 голосов
/ 09 октября 2010

Вы можете использовать linq:

sortedStudents1 = students.OrderBy(s=>s.Name).ToList();
sortedStudents2 = students.OrderBy(s=>s.ID).ToList();
...