列表分页加载异常咨询:第20页无法获取目标数据
问题分析与解决方案
嘿,这个分页问题我碰到过好多次了——你的代码确实存在逻辑漏洞,导致最后一页拿不到数据!
问题根源
你当前的分页计算是用 page * pageSize 来确定要跳过的记录数,但显然你的page参数是从1开始计数的(比如第20页是最后一页)。当page=20、pageSize=5时:
page * pageSize = 20 * 5 = 100
这意味着你直接跳过了全部100条记录,Take(5)自然拿不到任何数据。
修正后的代码
我们需要把跳过的记录数改成 (page - 1) * pageSize,这样第一页跳过0条,第20页跳过19*5=95条,刚好能拿到最后5条数据。另外建议加上参数校验,避免非法输入:
IList<portable.ActionReturnResult> GetPage(IList<portable.ActionReturnResult> list, int page, int pageSize) { // 处理非法参数,避免出现负数跳过或无效页大小 if (page < 1) page = 1; if (pageSize < 1) pageSize = 5; // 可根据需求设置默认页大小 int skipCount = (page - 1) * pageSize; return list.Skip(skipCount).Take(pageSize).ToList(); }
调用的时候注意,方法已经返回ToList()了,不需要重复调用:
IList<portable.ActionReturnResult> Pageload = GetPage(appBase.Results, currentpage, pageSize);
额外说明
如果你的分页逻辑原本打算让page从0开始计数(比如第0页是第一页),那原来的代码是没问题的,但显然你的场景里page是从1开始的,所以必须做这个调整。
内容的提问来源于stack exchange,提问作者A M N Kumari
相关产品推荐
相关产品推荐

