Страницы

Поиск по вопросам

среда, 12 декабря 2018 г.

LINQ. Найти элементы, значения свойства которых совпадают со значениями, находящимися в коллекции

Есть коллекция с неограниченным числом элементов, пусть для примера будут 3 имени
List names = new List() { "Dmitry", "Katia", "Vova" };
Предположим есть коллекция, хранящая сущности пользователей. Чтобы найти все сущности с именем "Dima" можно сделать что-то вроде этого source.where(u => u.Name == names[0]).ToList(); А как найти всех пользователей, имена которых совпадают со значением элементов коллекции?


Ответ

По-разному.
Например, можно сделать так:
var nameSet = new HashSet(names); var filteredUsers = users.Where(u => nameSet.Contains(u.Name));
(Можно, конечно, и обойтись без создания HashSet, но поиск по HashSet выполняется за O(1), а поиск по списку — за O(длины списка).)

Комментариев нет:

Отправить комментарий