From f2a22aa8958ccf7c14fdbff5e3ac519f148becfc Mon Sep 17 00:00:00 2001 From: KaneLeung Date: Tue, 30 Mar 2021 11:45:59 +0800 Subject: [PATCH] =?UTF-8?q?:rocket:=E8=A1=A5=E5=85=85ISelectGrouping?= =?UTF-8?q?=E7=9A=84=E5=88=86=E9=A1=B5=E6=A8=A1=E5=9E=8B=E5=88=86=E9=A1=B5?= =?UTF-8?q?=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FreeSql/FreeSql.xml | 7 +++++++ FreeSql/Interface/Curd/ISelect/ISelectGrouping.cs | 10 +++++++++- .../SelectProvider/SelectGroupingProvider.cs | 8 ++++++++ 3 files changed, 24 insertions(+), 1 deletion(-) 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) {