.ToOffsetPageAsync()

ToOffsetPageAsync() 是 SqlSugar 提供的一个异步分页查询方法,适用于高效的分页操作,尤其在支持 OFFSETFETCH 语法的数据库(如 SQL Server 2012+、PostgreSQL 等)中表现更优

方法说明

ToOffsetPageAsync() 的主要功能是执行异步分页查询,返回分页数据。它支持以下参数:
  • pageIndex:当前页码(从1开始)。
  • pageSize:每页显示的记录数。
  • total:返回的总记录数(可选,通过 RefAsync<int> 传递)。

使用示例

以下是一个使用 ToOffsetPageAsync() 的示例代码:
int pageIndex = 1; // 当前页码
int pageSize = 10; // 每页显示的记录数
var db = new SqlSugarScope(...); // 初始化 SqlSugar 数据库上下文

// 执行分页查询
var result = await db.Queryable<YourEntity>()
                     .OrderBy(it => it.Id) // 添加排序条件
                     .ToOffsetPageAsync(pageIndex, pageSize);
如果需要获取总记录数,可以使用 RefAsync<int>

var total = new RefAsync<int>();
var result = await db.Queryable<YourEntity>()
                     .OrderBy(it => it.Id)
                     .ToOffsetPageAsync(pageIndex, pageSize, total);
Console.WriteLine($"总记录数: {total.Value}");
 

注意事项

  1. 性能优化:
    • 确保查询中使用了适当的索引,以提高分页查询的性能
    • 对于大数据量的分页查询,ToOffsetPageAsync() 通常比传统的 ToPageListAsync() 更高效
  2. 数据库支持:
    • ToOffsetPageAsync() 更适合支持 OFFSETFETCH 语法的数据库(如 SQL Server 2012+、PostgreSQL)。对于低版本数据库,可能需要使用 ToPageListAsync()
  3. 异步操作:
    • ToOffsetPageAsync() 是异步方法,必须使用 await 关键字调用,以避免阻塞主线程
  4. 获取总记录数:
    • 如果需要获取总记录数,可以使用 RefAsync<int> 类型的参数

示例场景

假设你有一个 FileInfo 表,需要根据条件进行分页查询:

int page = 1;
int limit = 10;
var result = await db.Queryable<FileInfo>()
                     .Where(m => m.FilePid == pid && m.FileExtend == ".pdf")
                     .OrderByDescending(m => m.Id)
                     .ToOffsetPageAsync(page, limit);
 
通过正确使用 ToOffsetPageAsync(),可以实现高效的分页查询,提升应用程序的性能和用户体验
posted @   yinghualeihenmei  阅读(8)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
历史上的今天:
2024-01-22 Sql语句执行报错:将 numeric 转换为数据类型 numeric 时出现算术溢出错误
点击右上角即可分享
微信分享提示