C# 在ASP.NET Web API中,如何逐个发送和接收记录集合

C# 在ASP.NET Web API中,如何逐个发送和接收记录集合,c#,asp.net-mvc,winforms,entity-framework,asp.net-web-api,C#,Asp.net Mvc,Winforms,Entity Framework,Asp.net Web Api,我使用的是实体框架,ASP.NET Web API,有一个WinForm客户端,它将数据发送到服务器或接收 我知道如何获取一个记录,也知道如何一次获取一组记录,但是可能会有大量的记录,这可能会导致问题那么如何在客户端一个接一个地收集新信息呢? 我想我可以先得到一张新身份证的清单,然后一个接一个地得到。有更好的方法吗 关于实现这一点的任何信息都将非常有用 编辑:说得很清楚,我的意思是从客户机中的服务器而不是从数据库中的服务器获取一组信息:)解决此问题的一种非常常见的方法是创建某种形式的分页。例如,

我使用的是实体框架,ASP.NET Web API,有一个WinForm客户端,它将数据发送到服务器或接收

我知道如何获取一个记录,也知道如何一次获取一组记录,但是可能会有大量的记录,这可能会导致问题那么如何在客户端一个接一个地收集新信息呢?

我想我可以先得到一张新身份证的清单,然后一个接一个地得到。有更好的方法吗

关于实现这一点的任何信息都将非常有用


编辑:说得很清楚,我的意思是从客户机中的服务器而不是从数据库中的服务器获取一组信息:)

解决此问题的一种非常常见的方法是创建某种形式的分页。例如,第一次,只需从服务器获取前50条记录。然后根据某些条件(可能是用户触发的,也可能是基于时间自动的,取决于您的应用程序)获取下一组数据,记录51-100

您可以通过触发获取不同页面的数据来获得创造性。例如,如果需要以这种方式显示数据,可以根据用户滚动鼠标滚轮触发数据检索。最终这取决于您的场景,但我相信分页是答案


您的页面大小可以是5条记录,也可以是500条记录,但想法是一样的。

分页就是答案。下面是使用实体框架和使用Skip and Take的MVC分页的链接。基本上可以指定起始索引(或“跳过”),然后指定要获取的记录数(或“获取”)。像这样:

context.YOURDBSET.Skip(0).Take(10);  //Gets the first 10.
context.YOURDBSET.Skip(10).Take(10);  //Gets the next 10.
context.YOURDBSET.Skip(20).Take(10);  //Gets the next 10.
等等等等等等


这是链接:

如有疑问,请咨询Skeet先生:@TiesonT。这是一次从数据库获取所有项目,而不是一次获取一个项目。@Servy我主要是指Jon在回答中链接到的两篇文章,因为理解
yield
实际上是如何工作的是一个很好的第一步。但是,是的,该示例中的代码返回整个集合。谢谢RickB。但是客户端不知道服务器上是否有新记录,服务器也不知道客户端有哪些记录?客户端需要进行分页。客户机的第一个查询应该询问“有多少条记录?”。然后从这些信息中,它可以页面显示它需要的内容。如果您认为第一个问题提出后可能会有新数据,请在一段时间后再次询问。如果您认为新记录将是常见的情况,请在分页API中添加日期-时间参数。请注意
。跳过(…)。将(…)
作为仅选择页面所需数据的一种方法。