Если я бегу
ctx.CompanyDirectors.OrderBy(c => c.Id).Skip(pageNumber*pageSize).Take(pageSize).ToList();
Пейджинг происходит на SQL Server (теперь классический row_number() OVER
), и это, как я и ожидал.
Однако я добавил небольшой метод расширения ярлыка ниже:
public static IEnumerable<T> Page<T>(this IEnumerable<T> enumerable, int pageNumber, int pageSize)
{
return enumerable
.Skip(pageNumber*pageSize)
.Take(pageSize);
}
И когда я это сделаю
ctx.CompanyDirectors.OrderBy(c => c.Id).Page(pageNumber, pageSize).ToList();
Теперь подкачка происходит в клиентском коде, т. Е. Все результаты возвращаются, и подкачка происходит в памяти, что бесполезно.
Я ошеломлен, но явно упускаю что-то явно очевидное ...