var queryResultPage = eventsResults.Results
.Skip(pageParameters.PageSize * pageParameters.CurrentPageNumber)
.Take(pageParameters.PageSize).ToList();
var queryResultPage = eventsResults.Results.Skip(10* 1).Take(10).ToList();
现在,如果 Results 中的对象数量为
16
,则此 Linq 查询为
仅返回 6
结果,而它应该返回 10
。
您已声明要跳过前 10 条记录,然后获取其余 10 条记录。如果它只包含 16 个,那么您只能得到
16-10=6
以来剩余的 6 个。
也许您应该用 0 而不是 1 初始化
pageParameters.CurrentPageNumber
。然后您将跳过第一页的 10 * 0
记录。
CurrentPageNumber
应该从 0 开始,只需使用 (CurrentPageNumber - 1)
如果第一页上
pageParameters.CurrentPageNumber
的值为1,那么它会跳过前10个结果并仅返回剩余的6个元素
如果您希望最后一页包含最大页面长度的结果集,那么您应该首先检查这是否是最后一页并获取最后
<PageSize>
结果数:
if (pageParameters.PageSize * pageParameters.CurrentPageNumber > eventsResults.Results.Count()
{
var queryResultPage = eventsResults.Results.Reverse().Take(pageParameters.PageSize).Reverse();
}
else
{
// do the paging same way you did before
}
CurrentPageNumber 应从零开始
您从 16 个元素开始。你跳过其中的 10 个,留下 6 个。然后你最多拿走其中的 10 个......所以你得到 6 个。基本上一切都按照你期望的方式工作
这修复了我的错误 -
var queryResultPage = eventsResults.Results
.Skip(pageParameters.PageSize * (pageParameters.CurrentPageNumber - 1))
.Take(pageParameters.PageSize).ToList();