.ToOffsetPageAsync()
ToOffsetPageAsync() 是 SqlSugar 提供的一个异步分页查询方法,适用于高效的分页操作,尤其在支持 OFFSET 和 FETCH 语法的数据库(如 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}");
注意事项
-
性能优化:
-
确保查询中使用了适当的索引,以提高分页查询的性能。
-
对于大数据量的分页查询,
ToOffsetPageAsync()通常比传统的ToPageListAsync()更高效。
-
-
数据库支持:
-
ToOffsetPageAsync()更适合支持OFFSET和FETCH语法的数据库(如 SQL Server 2012+、PostgreSQL)。对于低版本数据库,可能需要使用ToPageListAsync()。
-
-
异步操作:
-
ToOffsetPageAsync()是异步方法,必须使用await关键字调用,以避免阻塞主线程。
-
-
获取总记录数:
-
如果需要获取总记录数,可以使用
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(),可以实现高效的分页查询,提升应用程序的性能和用户体验
浙公网安备 33010602011771号