diff --git a/FreeSql/FreeSql.xml b/FreeSql/FreeSql.xml
index 6d7acdfc..892888fe 100644
--- a/FreeSql/FreeSql.xml
+++ b/FreeSql/FreeSql.xml
@@ -2614,6 +2614,13 @@
每页多少
+
+
+ 分页
+
+ 分页信息
+
+
查询的记录数量
diff --git a/FreeSql/Interface/Curd/ISelect/ISelectGrouping.cs b/FreeSql/Interface/Curd/ISelect/ISelectGrouping.cs
index 295b7411..c787cc61 100644
--- a/FreeSql/Interface/Curd/ISelect/ISelectGrouping.cs
+++ b/FreeSql/Interface/Curd/ISelect/ISelectGrouping.cs
@@ -1,4 +1,5 @@
-using System;
+using FreeSql.Internal.Model;
+using System;
using System.Collections.Generic;
using System.Linq.Expressions;
using System.Text;
@@ -101,6 +102,13 @@ namespace FreeSql
///
ISelectGrouping Page(int pageNumber, int pageSize);
+ ///
+ /// 分页
+ ///
+ /// 分页信息
+ ///
+ ISelectGrouping Page(BasePagingInfo pagingInfo);
+
///
/// 查询的记录数量
///
diff --git a/FreeSql/Internal/CommonProvider/SelectProvider/SelectGroupingProvider.cs b/FreeSql/Internal/CommonProvider/SelectProvider/SelectGroupingProvider.cs
index 09c524e0..68ca4c50 100644
--- a/FreeSql/Internal/CommonProvider/SelectProvider/SelectGroupingProvider.cs
+++ b/FreeSql/Internal/CommonProvider/SelectProvider/SelectGroupingProvider.cs
@@ -201,6 +201,14 @@ namespace FreeSql.Internal.CommonProvider
return this;
}
+ public ISelectGrouping Page(BasePagingInfo pagingInfo)
+ {
+ pagingInfo.Count = this.Count();
+ _groupBySkip = Math.Max(0, pagingInfo.PageNumber - 1) * pagingInfo.PageSize;
+ _groupByLimit = pagingInfo.PageSize;
+ return this;
+ }
+
public long Count() => _select._cancel?.Invoke() == true ? 0 : long.TryParse(string.Concat(_orm.Ado.ExecuteScalar(_select._connection, _select._transaction, CommandType.Text, $"select count(1) from ({this.ToSql($"1{_comonExp._common.FieldAsAlias("as1")}")}) fta", _select._commandTimeout, _select._params.ToArray())), out var trylng) ? trylng : default(long);
public ISelectGrouping Count(out long count)
{