在.NET Core中使用EF Core进行分页是一个比较常见的需求,可以通过一下步骤实现:
1.定义一个PageLoad类,用于包含分页结果返回给客户端:
public class PageLoad<T>
{
public int TotalCount {get;set;}
public int CurrentPage {get;set;}
public int PageSzie {get;set;}
public List<T> data {get;set;}
public int TotalPages=>(int)Math.Ceiling((decimal) TotalCount/PageSize);
//是否有上一页
public bool HasPreviousPage=>CurrentPage>1;
public bool HasNextPage=>CurrentPage<TotalCount;
}
2、在数据访问层中封装一个方法,用于返回分页结果:
public async Task<PageLoad<T>> GetPagedAsync<T> (IQueryable<T> query,int pageIndex,int pageSize)
{
var result=new PageLoad<T>
{
TotalCount=await query.CountAsync(),
CurrentPage=pageIndex,
PageSize=pageSize,
data=await query.Skip((pageIndex-1)*pageSize).Take(pageSize).ToListAsync()
};
return result;
}
3、在服务层中调用数据访问层方法,获取分页结果:
public async Task<PageLoad<MyClass>> GetMyClassAsync(int pageIndex,int pageSize)
{
var query=_context.MyClass.AsQueryable();
var result=await _repository.GetPagedAsync(query,pageIndex,pageSize);
return result;
}
综上所诉,使用EF Core进行分页的关键在于封装一个可用的方法,该方法接受按指定顺序排序的IQueryable,并返回一个带有分页信息分PageLoad对象。客户端可以通过将分页信息与分页结果结合使用来呈现分页数据。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)