gpt4 book ai didi

entity-framework - 如何使用 Linq To Entities 处理分页 IQueryable? (OrderBy 的问题)

转载 作者:行者123 更新时间:2023-12-04 08:29:02 26 4
gpt4 key购买 nike

我目前正在使用 Linq to Entities 构建一个简单的 ASP.NET MVC 站点。我第一次涉足这个世界是 Nerd 晚餐,在那里我找到了我试图使用的分页列表代码。代码如下所示:

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);
}
}
}

问题是我用的是 Entity Framework ,上面的代码抛出如下错误:

方法“跳过”仅支持 LINQ to Entities 中的排序输入。方法 'OrderBy' 必须在方法 'Skip' 之前调用。

不知道 Linq 的来龙去脉,当我不知道上面方法中的列名是什么时,我不确定如何添加 orderby 子句,它是通用的。

谢谢!

最佳答案

首先,我强烈建议使用免费的 PagedList代码而不是自己编写,因为它考虑了许多您最终必须自己发现的东西,并且几乎没有缺点。

要回答您的问题,您应该在将列表传递给分页功能之前对其进行排序。如果您需要动态执行此操作,可以使用 Microsoft DynamicQuery图书馆。但通常,调用代码会知道如何对列表进行排序。

关于entity-framework - 如何使用 Linq To Entities 处理分页 IQueryable? (OrderBy 的问题),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1520886/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com