【发布时间】:2010-12-04 00:02:06
【问题描述】:
我目前正在使用 Linq to Entities 构建一个简单的 ASP.NET MVC 站点。我第一次涉足这个世界是书呆子晚餐,在那里我找到了我正在尝试使用的分页列表代码。代码如下:
public class PaginatedList<T> : List<T>
{
public int PageIndex { get; private set; }
public int PageSize { get; private set; }
public int TotalCount { get; private set; }
public int TotalPages { get; private set; }
public PaginatedList(IQueryable<T> source, int pageIndex, int pageSize)
{
PageIndex = pageIndex;
PageSize = pageSize;
TotalCount = source.Count();
TotalPages = (int)Math.Ceiling(TotalCount / (double)PageSize);
this.AddRange(source.Skip(PageIndex * PageSize).Take(PageSize));
}
public bool HasPreviousPage
{
get
{
return (PageIndex > 0);
}
}
public bool HasNextPage
{
get
{
return (PageIndex + 1 < TotalPages);
}
}
}
问题是我用的是实体框架,上面代码抛出如下错误:
“跳过”方法仅支持 LINQ to Entities 中的排序输入。必须在方法“Skip”之前调用方法“OrderBy”。
不知道 Linq 的来龙去脉,当我不知道上述方法中的列名是什么时,我不确定如何添加 orderby 子句,它是通用的。
谢谢!
【问题讨论】:
标签: entity-framework generics iqueryable