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