我不希望有一个返回IQueryable的方法,但我也希望我的分页查询在数据库而不是内存中执行。 这个article讨论了如何通过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);
}
如下所示传递给它的IPagination。
var productPagedList = productList.GetRange(page ?? 1, 10, p => p.SupplierID, false)
.AsPagination(page ?? 1, 10);
但网格需要知道总记录数才能正确呈现寻呼机。 有没有办法让MVCContrib网格与服务层暴露的IQueryable子集一起使用?或者以某种方式将总记录数量提供给它?还是其他任何提示?
谢谢