首页 > 解决方案 > webapi中如何实现分页

问题描述

如何在 webapi dotnet core 中实现分页?

我尝试使用 Skip / take ,但是当只涉及 1 个表时, skip / take 可以工作。就我而言,我必须加入几个表然后实现分页。

var searchList = _context.Table1
 .Include(b => b.Table2)
 .Include(c => c.Table3)
 .Include(c => c.Table4)
 .Include(c => c.Table5)
 .Include(c => c.Table6)                
.Skip((pageNumber - 1) * pageSize)
.Take(pageSize)            
.ToList();

当涉及多个表时,实现分页的更好方法是什么?

标签: .netlinq.net-corepaginationentity-framework-core

解决方案


考虑到这个MSDN 文档,您可以在.NET 5 SDK 和更高版本中使用带有 Where 子句的 Filtered Include。.NET 5 及更高版本中的 Include Where 子句支持此操作:

  • 在哪里
  • OrderBy(降序)
  • ThenBy(降序)
  • 跳过

你的查询可以是这样的:

var query = _context.Table1
      .Include(b => b.Table2.Skip((pageNumber - 1) * pageSize).Take(pageSize))             
      .Skip((pageNumber - 1) * pageSize)
      .Take(pageSize)  
      .ToList();

推荐阅读