开发者

Linq to SQL generic paging method confusion

开发者 https://www.devze.com 2023-03-10 11:20 出处:网络
If i run ctx.CompanyDirectors.OrderBy(c => c.Id).Skip(pageNumber*pageSize).开发者_StackOverflow社区Take(pageSize).ToList();

If i run

ctx.CompanyDirectors.OrderBy(c => c.Id).Skip(pageNumber*pageSize).开发者_StackOverflow社区Take(pageSize).ToList();

The paging happens on SQL Server (the now classic row_number() OVER) and this is as I'd expect.

However I've added a small shortcut extension method below:

public static IEnumerable<T> Page<T>(this IEnumerable<T> enumerable, int pageNumber, int pageSize)
    {
      return enumerable
        .Skip(pageNumber*pageSize)
        .Take(pageSize);
    }

And when i do

ctx.CompanyDirectors.OrderBy(c => c.Id).Page(pageNumber, pageSize).ToList();

The paging now occurs back in the client code i.e. all the results are returned and the paging occurs in memory, which is fugly.

I'm bemused, but am obviously missing something glaringly obvious...


I think you need to have an extension method on IQueryable<T>.

0

精彩评论

暂无评论...
验证码 换一张
取 消