2

我不想有一个返回 IQueryable 的方法,但我也希望我的分页查询在数据库中而不是在内存中执行。本文讨论如何通过 IQueryable 仅公开数据的子集。

我修改了文章中描述的 GetRange 方法,如下所示。

    public IEnumerable<T> GetRange<TKey>(int page, int pageSize, Expression<Func<T, TKey>> keySelector, bool ascending )
    {

        IOrderedQueryable<T> sourceOrdered = null;
        sourceOrdered = ascending ? source.OrderBy(keySelector) : source.OrderByDescending(keySelector);

        return sourceOrdered.Skip((page - 1) * pageSize).Take(pageSize);

    }

并通过它 contrib IPagination 如下。

  var productPagedList = productList.GetRange(page ?? 1, 10, p => p.SupplierID, false)
            .AsPagination(page ?? 1, 10);

但是网格需要知道总记录数才能正确呈现寻呼机。有没有办法让 MVCContrib 网格以这种方式与从服务层公开的 IQueryable 的子集一起工作?或者以某种方式将总记录数提供给它?或者有什么其他技巧吗?

谢谢

4

0 回答 0