Когда мы вызываем оператор запроса для последовательности, вызывается оператор, специфичный для последовательности.
Я имею в виду, если я вызову оператор Where<>()
для IEnumerable<>
, оператор, который будет вызван, будет определен в классе Enumerable, а если он будет вызван в IQueryable<>
, будет вызван оператор, определенный в классе Queryable.
Рассмотрим оператор Reverse, определенный в классе Enumerable.
Если я хочу вызвать его на Iqueryable<>
, тогда я должен использовать оператор AsEnumerable<>()
, чтобы сначала преобразовать его в IEnumerable<>
.
db.Countries.OrderBy(cntry=>cntry.CountryName).AsEnumerable().Reverse()
Но оператор Reverse должен иметь все записи одновременно, чтобы он мог их отменить.
В приведенном выше коде все записи сначала загружаются в память, а затем оператор Reverse () обращает их вспять?