В прошлых статьях c# - Сортировка List<T> на Linq, c# - Сортировка List<T> и c# - Сортировка List<T> лямбда выражения мы сортировали коллекцию List<T> с помощью делегата и анонимного метода, с помощью запроса Linq и лямбда выражения.
Сегодня же применим все те знания для выполнения похожей задачи - поиск и выборка из коллекции элементов по условию.
Для этих целей на может подойти метод методом FindAll для выборки из списка только те элементы, удовлетворяющие определенному условию.
Или же метод Find для получения первого попавшегося элемента коллекции, отвечающего условию отбора.
Например, мы хотим выбрать всех учителей, у которых имя начинается с «Мал». Под такое условие подпадают учителя по имени Малинкина Оксана Григорьевна, Мальский Владимир Петрович, Малошкина Татьяна Васильевна и т.п.
Опять же анонимный метод поможет нам в этом:
List<Teacher> teachersMal =
teachers.FindAll(delegate(Teacher teach)
{ return teach.Name.StartsWith("Мал"); });
Ну и познакомившись в предыдущих статьях с более современными подходами в работе с запросами, перепишем
предыдущий код на Linq-запросах и лямбда-выражениях:
var teachersVar =
from t in teachers orderby t.name
where t.name.StartsWith("Мал") select t;
List<Teacher> teachersMal = teachersVar.ToList<Teacher>();
List<Teacher> teachersMal =
teachers.FindAll(t => t.name.StartsWith("Мал"));
Как видите, любой из способов достаточно прост в реализации и, главное, в осмыслении при его чтении.
И снова повторюсь, что выбирать определенный из них следует в конкретной ситуации. Каждый из рассмотренных вариантов
целесообразнее применять в конкретной ситуации, в зависимости от поставленных задач.