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