Подтвердить что ты не робот

Разница между Select и Where in Entity Framework

В чем разница между .Select() и .Where() в Entity Framework? Например,

return ContextSet().Select(x=> x.FirstName == "John")

против

ContextSet().Where(x=> x.FirstName == "John")

Когда мне следует использовать .Select vs .Where?

4b9b3361

Ответ 1

Select - это проекция, поэтому вы получаете выражение x=> x.FirstName == "John", оцениваемое для каждого элемента в ContextSet() на сервере, то есть множество значений true/false (тот же номер, что и ваш первоначальный список). Если вы посмотрите, select вернет что-то вроде IEnumerable<bool> (потому что тип x=> x.FirstName == "John" - это bool).

Where фильтрует результаты, возвращая перечислимый тип оригинала (без проекции).


Итак, используйте Select, когда вы хотите сохранить все результаты, но измените их тип (спросите их).

Используйте Where, если вы хотите отфильтровать результаты, сохраняя исходный тип

Ответ 2

Where() - это фильтр.

Select() выбирает другую часть данных.
Ваш пример Select() возвращает коллекцию логических элементов.