如何使用 Entity Framework 获取每个 API 请求的下 10 或 20 行?

How can I get next 10 or 20 row each API request with Entity Framework?

我有数千行,但我不想只使用 Users.ToList() 可能效率不高。我只想向 API 每个请求发送 20 或 30 行。接下来的 20 行和接下来的 20 行我想这样做,可以吗?

喜欢 Twitter 或 Instagram

这里有什么更好的解决方案?

任何视频或文章。我需要一些建议,

谢谢大家

注意:目前,我正在使用ASP.NET Core 5.0,我正在使用React Native作为移​​动开发

让您的 API 端点接受页面偏移量和页面大小参数(如何取决于您 - 查询字符串、请求正文的一部分等)。然后,您可以使用 IQueryable<T> .Skip.Take 扩展方法 return 请求的行集:

var results = _dbContext.YourDbSet
    .Skip( pageOffset * pageSize )
    .Take( pageSize );

Entity Framework built-in 支持分页。你可以像这样很容易地实现它:

private IQueryable<Users> GetPageOfUsers(this IQueryable<Users> query, int pageNumber, int pageSize = 20)
{
    // skip pages to get to the required page number
    query = query.Skip(pageSize * pageNumber);
    
    // take the number of entities to fill this page
    query = query.Take(pageSize);
    
    return query;
}

然后,您可以像这样调用此扩展方法:

Users.GetPageOfUsers(0, 20).ToList();

值得注意的是,此方法不考虑在页面请求之间可能插入页面中间的行;但是,对于按 database-generated 和 auto-incrementing 主键排序的传统 table,这可能不是 material 问题。