From 7f9b3a8f6821470092f01e7cf0423896bcc8afdb Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Fri, 14 Jul 2017 01:32:56 +0800 Subject: [PATCH] - --- .../QueryableProvider/QueryableProvider.cs | 10 +++++++ .../SqlBuilderProvider/QueryBuilder.cs | 26 ++++++++++++------- 2 files changed, 27 insertions(+), 9 deletions(-) diff --git a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs index d735963f5..9375f2c90 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs @@ -465,6 +465,11 @@ namespace SqlSugar { if (pageIndex == 0) pageIndex = 1; + if (QueryBuilder.PartitionByValue.IsValuable()) + { + QueryBuilder.ExternalPageIndex = pageIndex; + QueryBuilder.ExternalPageSize = pageSize; + } QueryBuilder.Skip = (pageIndex - 1) * pageSize; QueryBuilder.Take = pageSize; return ToDataTable(); @@ -483,6 +488,11 @@ namespace SqlSugar { if (pageIndex == 0) pageIndex = 1; + if (QueryBuilder.PartitionByValue.IsValuable()) + { + QueryBuilder.ExternalPageIndex = pageIndex; + QueryBuilder.ExternalPageSize = pageSize; + } QueryBuilder.Skip = (pageIndex - 1) * pageSize; QueryBuilder.Take = pageSize; return ToList(); diff --git a/Src/Asp.Net/SqlSugar/Abstract/SqlBuilderProvider/QueryBuilder.cs b/Src/Asp.Net/SqlSugar/Abstract/SqlBuilderProvider/QueryBuilder.cs index b66468a8d..0d8fb33a6 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/SqlBuilderProvider/QueryBuilder.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/SqlBuilderProvider/QueryBuilder.cs @@ -34,6 +34,8 @@ namespace SqlSugar #region Splicing basic public bool IsCount { get; set; } public int? Skip { get; set; } + public int ExternalPageIndex { get; set; } + public int ExternalPageSize { get; set; } public int? Take { get; set; } public string OrderByValue { get; set; } public object SelectValue { get; set; } @@ -236,27 +238,33 @@ namespace SqlSugar } var isRowNumber = Skip != null || Take != null; var rowNumberString = string.Format(",ROW_NUMBER() OVER({0}) AS RowIndex ", GetOrderByString); - sql.AppendFormat(SqlTemplate, GetSelectValue, GetTableNameString, GetWhereValueString, GetGroupByString + HavingInfos,(!isRowNumber&&this.OrderByValue.IsValuable())?GetOrderByString:null); - sql.Replace("{$:OrderByString:$}", isRowNumber? (this.IsCount?null: rowNumberString): null); + sql.AppendFormat(SqlTemplate, GetSelectValue, GetTableNameString, GetWhereValueString, GetGroupByString + HavingInfos, (!isRowNumber && this.OrderByValue.IsValuable()) ? GetOrderByString : null); + sql.Replace("{$:OrderByString:$}", isRowNumber ? (this.IsCount ? null : rowNumberString) : null); if (IsCount) { return sql.ToString(); } - if (Skip != null && Take == null) + return ToPageSql(sql.ToString(),this.Take,this.Skip); + + } + + protected virtual string ToPageSql(string sql,int? take,int? skip) + { + if (skip != null && take == null) { - return string.Format(PageTempalte, sql.ToString(), Skip.ObjToInt() + 1, long.MaxValue); + return string.Format(PageTempalte, sql.ToString(), skip.ObjToInt() + 1, long.MaxValue); } - else if (Skip == null && Take != null) + else if (skip == null && take != null) { - return string.Format(PageTempalte, sql.ToString(), 1, Take.ObjToInt()); + return string.Format(PageTempalte, sql.ToString(), 1, take.ObjToInt()); } - else if (Skip != null && Take != null) + else if (skip != null && take != null) { - return string.Format(PageTempalte, sql.ToString(), Skip.ObjToInt() + 1, Skip.ObjToInt() + Take.ObjToInt()); + return string.Format(PageTempalte, sql.ToString(), skip.ObjToInt() + 1, skip.ObjToInt() + take.ObjToInt()); } else { return sql.ToString(); } - } + public virtual string ToJoinString(JoinQueryInfo joinInfo) { return string.Format(