В этом разница между Linq-To-Objects и Linq-To-Entities. Linq-To-Objects работает с IEnumerable<T>
, и вы передаете делегаты его методам, чтобы определить запрос, который будет выполнен в памяти. Linq-To-Entities работает на IQueryable<T>
, и вы передаете выражения его методам, определяя дерево выражений, которое преобразовывается поставщиком Linq-to-entity в другой синтаксис - в SQL!
Таким образом, ваш запрос будет выполнен в базе данных, а фильтрация будет выполнена и в базе данных. Помните, что после выполнения таких команд, как AsEnumerable
, ToArray
, ToDictionary
или ToList
, вы преобразуете остальную часть запроса в Linq-to-objects.
Если вы пишете запрос о результате выполнения хранимой процедуры, вы всегда выполняете только запросы Linq-to-objects, а запросы ObjectSets напрямую формируют запросы Linq-to-entity.