From c2b00ade08af27df2f26a969908bc50a3154dc39 Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Fri, 14 Jul 2017 02:35:55 +0800 Subject: [PATCH] Update Queryable.PartitionBy --- .../QueryableProvider/QueryableProvider.cs | 15 +++++++++++++-- .../Abstract/SqlBuilderProvider/QueryBuilder.cs | 9 ++++++++- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs index 6094bf307..d4bc6317f 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs @@ -390,8 +390,19 @@ namespace SqlSugar public virtual int Count() { - QueryBuilder.IsCount = true; - var sql = QueryBuilder.ToSqlString(); + + var sql = string.Empty; + if (QueryBuilder.PartitionByValue.IsValuable()) + { + sql = QueryBuilder.ToSqlString(); + sql = QueryBuilder.ToCountSql(sql); + } + else + { + + QueryBuilder.IsCount = true; + sql = QueryBuilder.ToSqlString(); + } var reval = Context.Ado.GetInt(sql, QueryBuilder.Parameters.ToArray()); RestoreMapping(); QueryBuilder.IsCount = false; diff --git a/Src/Asp.Net/SqlSugar/Abstract/SqlBuilderProvider/QueryBuilder.cs b/Src/Asp.Net/SqlSugar/Abstract/SqlBuilderProvider/QueryBuilder.cs index 52c5e125e..a40466a1a 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/SqlBuilderProvider/QueryBuilder.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/SqlBuilderProvider/QueryBuilder.cs @@ -216,6 +216,7 @@ namespace SqlSugar } public virtual string ToSqlString() { + string oldOrderBy=this.OrderByValue; if (!IsDisabledGobalFilter && this.Context.QueryFilter.GeFilterList.IsValuable()) { var gobalFilterList = this.Context.QueryFilter.GeFilterList.Where(it => it.FilterName.IsNullOrEmpty()).ToList(); @@ -245,10 +246,16 @@ namespace SqlSugar if (ExternalPageIndex > 0) { result = ToPageSql(result,(ExternalPageIndex-1)*ExternalPageSize,ExternalPageSize); } + this.OrderByValue = oldOrderBy; return result; } - protected virtual string ToPageSql(string sql,int? take,int? skip) + public virtual string ToCountSql(string sql) { + + return string.Format(" SELECT COUNT(1) FROM ({0}) CountTable ",sql); + } + + public virtual string ToPageSql(string sql,int? take,int? skip) { if (skip != null && take == null) {