В прошлой статье c# - Сортировка List<T> на Linq мы сортировали (не от слова «Сортир» :)) коллекцию List<T> с помощью запроса Linq.
Как мы быстро поняли, не использовать Linq-выражения нет оснований, особенно если мы хотя бы чуточку представляем себе принципы их построения.
Давайте сейчас попробуем отойти от классического Linq и попробуем применить лямбда-выражения для выполнения сортировки обобщенной коллекции List.
После этого решим ,что же в данном случае стало удобнее: анонимный метод под делегатом, Linq-запрос, или лямбда-выражение.
Итак, наша старая задача (напомню, что нам надо упорядочить по алфавиту пользовательские объекты – элементы в коллекции, ориентируясь на открытое свойство Teacher.Name) в исполнении лямбда-операторов:
teachers.Sort((teacher1, teacher2) =>
teacher1.Name.CompareTo(teacher2.Name));
Как видим, данная запись уж очень сильно напоминает вариант в статье c# - Сортировка List<T>
teachers.Sort(delegate(Teacher teacher1, Teacher teacher2)
{ return teacher1.Name.CompareTo(teacher2.Name); });
То есть, если мы понимаем принципы применения делегатов для анонимных методов, то разобраться с лямбда-выражениями не составит особого труда.
Но, опять же, что использовать - решать конкретно Вам и в конкретной ситуации. Ни лямбда-операторы, ни Linq-запросы не заменят полностью старых добрых делегатов. Иногда помогут "скрасить" код и даже упростить его, но пока эти технологии остаются всего лишь красивой оберткой. Но все мы любим красивое...