Indeed, you are doing ToList() , so the request will be executed, and delayed execution will no longer be delayed.
You can try it without calling ToList() , but it all depends on the implementation of the ToPagedList(int, int) method.
You can just do the paging yourself.
const int pageSize = 25; const int pageNumber = 1; IQueryable<Product> query = _dbContext.Products; var pagedQuery = query.Skip(pageSize * (pageNumber - 1)).Take(pageSize).ToList();
And yes, you can just hide this logic behind the extension method on IQueryable<T> .
public static class IQueryableExtensions { public static IQueryable<T> ToPagedQuery<T>(this IQueryable<T> query, int pageSize, int pageNumber) { return query.Skip(pageSize * (pageNumber - 1)).Take(pageSize); } }
source share