C#分页问题

C#分页问题,c#,rest,pagination,C#,Rest,Pagination,我使用C#REST查询用户对象,可能有100000个或更多用户。也可能是500个用户或更少,用户总数是动态的,取决于逐个客户查询的客户 customer1可能有90000个用户 customer2可能有20000个用户 customer3可能有9000个用户 customer4可能有300个用户 等 返回的最大用户数为1000 查询链接是 如果客户有1000多个用户,那么响应头将包含分页链接,我们可以使用新链接查询下1000个用户,新链接如下 如果新的查询响应头包含一个新链接,则意味着还有更多

我使用C#REST查询用户对象,可能有100000个或更多用户。也可能是500个用户或更少,用户总数是动态的,取决于逐个客户查询的客户

customer1可能有90000个用户

customer2可能有20000个用户

customer3可能有9000个用户

customer4可能有300个用户 等

返回的最大用户数为1000

查询链接是

如果客户有1000多个用户,那么响应头将包含分页链接,我们可以使用新链接查询下1000个用户,新链接如下

如果新的查询响应头包含一个新链接,则意味着还有更多用户。新链接像

希望我在这里解释清楚

如您所见,用户总数是未知的,如果有1000个用户的多个页面,我们每次都需要查询一个新链接,我们不知道新链接,除非我们执行了上一个新链接查询,并且我们不知道完成所有查询的次数,下一个查询链接取决于上一个查询,嵌套

使用C#处理查询的最佳方式是什么


提前感谢

正如您提到的,您可以控制您的API响应,您可以根据查询返回用户总数 e、 g

如果无法更改响应格式,还可以将记录总数作为响应标头的一部分发送

然后,客户端可以根据分页值派生分页逻辑。您不必返回下一页链接。在这种情况下,请求应该具有offset或page number参数,用于标识作为响应的一部分返回的数据集 e、 我明白了

使用“边做边做”循环


如果有更多的用户,继续循环直到没有更多的用户。

查看标签:“一种内存管理技术,计算机从辅助存储器中存储和检索数据,以便在主存储器中使用。内存被划分为大小相等的页面,以便不浪费任何内存。”您确定这是正确的标签吗?另外,你没有在问题上加上C。基于你的问题,我想知道是否有一个数据库也应该被标记。正确的标签将帮助了解这些标签的人找到你的问题的答案。谢谢Alex,尝试编辑我的帖子为什么不发送用户总数呢?事实上,我根本不会发送下一页的链接。我只发送用户总数和返回的用户页面。从这一点来看,客户端应该能够处理从显示页面总数到进入特定页面到创建上一个和下一个链接,甚至第一个和最后一个页面链接的所有事情。感谢您的回复,服务器每个请求最多只能返回1000行用户,所以即使我想一次列出所有100000个用户,当服务器响应请求时,服务器仅返回1000,在响应头中,它将提供一个新链接,告知有更多用户您是否可以控制API响应?我不是建议让它在每次请求时返回超过1000行。我是说我将如何更改API响应以包含客户端更优雅地处理分页所需的信息。抱歉,我误解了“在控制API响应”的意思,我无法控制API响应,因此我无法生成分页信息或总用户信息,非常感谢您的回复
{
    "users": [...
         /// user data
     ],
    "paging":
     {
       "pageNo": 5,
       "pageSize": 50,
       "pageCount": 5,
       "totalRecordCount": 220,
    }
}