From 92de5907774100a89ef7667019611f463383febd Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Wed, 30 Mar 2022 21:35:03 +0800 Subject: [PATCH] Update .net --- .../SqlBuilder/SqlServerQueryBuilder.cs | 27 ++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/Src/Asp.Net/SqlSugar/Realization/SqlServer/SqlBuilder/SqlServerQueryBuilder.cs b/Src/Asp.Net/SqlSugar/Realization/SqlServer/SqlBuilder/SqlServerQueryBuilder.cs index cb1a1de8f..a57f2d263 100644 --- a/Src/Asp.Net/SqlSugar/Realization/SqlServer/SqlBuilder/SqlServerQueryBuilder.cs +++ b/Src/Asp.Net/SqlSugar/Realization/SqlServer/SqlBuilder/SqlServerQueryBuilder.cs @@ -15,8 +15,33 @@ namespace SqlSugar return "SELECT {0}{"+UtilConstants.ReplaceKey+"} FROM {1}{2}{3}{4}"; } } + public override string ToSqlString() + { + var oldTake = Take; + var oldSkip = Skip; + var isDistinctPage = IsDistinct && (Take > 1 || Skip > 1); + if (isDistinctPage) + { + Take = null; + Skip = null; + } + var result = _ToSqlString(); + if (isDistinctPage) + { + if (this.OrderByValue.HasValue()) + { + Take = int.MaxValue; + result = result.Replace("DISTINCT", $" DISTINCT TOP {int.MaxValue} "); + } + Take = oldTake; + Skip = oldSkip; + result =this.Context.SqlQueryable(result).Skip(Skip.Value).Take(Take.Value).ToSql().Key; + - public override string ToSqlString() + } + return result; + } + public string _ToSqlString() { string oldOrderBy = this.OrderByValue; string externalOrderBy = oldOrderBy;