у меня есть:Где EF linq пропустить/выполнить выполнение?
IQueryable<Entity> query = (from e in Context.Set<TEntity>() select e);
IEnumerable<TEntity> result = query.OrderBy(x=>x.Property).Skip(10).Take(10);
OrderBy/Skip/Take возвращает IEnumerable<T>
. Я обеспокоен тем, что произойдет, что все результаты будут возвращены, а затем Linq будет использоваться, чтобы взять только часть из них.
Мой вопрос: Являются ли OrderBy/Skip и Take включенными в выпущенный SQL-запрос таким образом, что возвращается только запрошенное подмножество итоговых результатов?
Пробовал ли вы его при мониторинге SQL Server? [Некоторые идеи здесь] (http://stackoverflow.com/questions/23822878/entity-framework-skip-take-functionality). – BCdotWEB
IQueryable скомпилирован в sql. Итак, да, возвращается только подмножество запроса из итоговых результатов. –
В качестве побочной темы я рекомендую вам прочитать о отложенном исполнении. http://blogs.msdn.com/b/charlie/archive/2007/12/09/deferred-execution.aspx –