Статья об "обратной" сортировке Перемешивание списка
На сегодняшний день существует несколько типов обобщенных коллекций для формирования сортируемых списков данных, ну взять к примеру SortedList.
Однако, иногда бывает необходимо сортировать именно обычный список List<T>
О способе его сортировки старым дедовским методам мы сейчас и поговорим.
Имеем определение класса Teacher:
public class Teacher
{
public string name;
public string password;
public Guid id;
public Teacher(string name, string password, Guid id)
{
this.name = name;
this.password = password;
this.id = id;
}
}
Определения свойств опущены для простоты.
Теперь, где-нибудь в коде нам требуется получить всех учителей данной школы.
Допустим, метод GetAllTeachers позволяет получить всех учителей.
public List<Teacher> GetAllTeachers()
{
List<Teacher> teachers = new List<Teacher>();
teachers.Add(new Teacher("Петя", "2", new Guid()));
teachers.Add(new Teacher("Маша", "5", new Guid()));
teachers.Add(new Teacher("Оля", "3", new Guid()));
teachers.Add(new Teacher("Ваня", "1", new Guid()));
return teachers;
}
Тогда, следующий код имеет право на существование:
List<Teacher> teachers = GetAllTeachers();
Имея в списке всех учителей мы можем распоряжаться им как хотим, хоть привязать к контролу ListBox.
И все бы хорошо, если метод GetAllTeachers возвращает отсортированную коллекцию. А если нет, нам следует отсортировать её самим.
Не будем пока трогать возможности технологии Linq (до этого мы еще дойдем), а используем анонимные методы, так сказать дедовский метод.
Определимся с условием сортировки. Естественно, логично сортировать в алфавитном порядке, по имени учителя. Поэтому данную процедуру можно выполнить следующим анонимным методом:
teachers.Sort(delegate(Teacher teacher1, Teacher teacher2)
{ return teacher1.Name.CompareTo(teacher2.Name); });
В итоге, наш список List<Teacher> teachers будет отсортирован по имени по алфавиту.
Статья об "обратной" сортировке Перемешивание списка и статья о сортировке Linq Сортировка List на Linq