var queryResultPage = eventsResults.Results
.Skip(pageParameters.PageSize * pageParameters.CurrentPageNumber)
.Take(pageParameters.PageSize).ToList();
var queryResultPage = eventsResults.Results.Skip(10* 1).Take(10).ToList();
现在,如果结果中的对象数为16
,则此Linq查询为。{
仅返回6
结果,它应返回10
。
答案 0 :(得分:3)
CurrentPageNumber
如果基于1只使用(CurrentPageNumber - 1)
答案 1 :(得分:3)
您已声明要跳过前10个记录,然后取其余10个记录。如果它只包含16,那么只有16-10=6
以后的剩余6个。
也许您应该使用0而不是1来初始化pageParameters.CurrentPageNumber
。然后,您将跳过第一页的10 * 0
条记录。
答案 2 :(得分:1)
如果您的第一页上pageParameters.CurrentPageNumber
的值为1,那么它会跳过前10个结果并仅返回剩余的6个元素
答案 3 :(得分:1)
如果您希望最后一页包含最大页面长度的结果集,那么您应首先检查这是否是最后一页并获取最后<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
}
答案 4 :(得分:1)
CurrentPageNumber应该是从零开始的
您从16个元素开始。你跳过其中的10个,留下6个。然后你最多占用10个...所以你得到6.基本上一切都按照你应该期待的方式工作
答案 5 :(得分:0)
修正了我的错误 -
var queryResultPage = eventsResults.Results
.Skip(pageParameters.PageSize * (pageParameters.CurrentPageNumber - 1))
.Take(pageParameters.PageSize).ToList();