diff --git a/Src/Asp.Net/SqlServerTest/Demos/1_Query.cs b/Src/Asp.Net/SqlServerTest/Demos/1_Query.cs index 92e9f5966..6c0c0c58e 100644 --- a/Src/Asp.Net/SqlServerTest/Demos/1_Query.cs +++ b/Src/Asp.Net/SqlServerTest/Demos/1_Query.cs @@ -122,14 +122,17 @@ namespace OrmTest.Demo var list2 = db.Queryable() .GroupBy(it => new { it.Id, it.Name }).Having(it => SqlFunc.AggregateAvg(it.Id) > 0) .Select(it => new { idAvg = SqlFunc.AggregateAvg(it.Id), name = it.Name }).ToList(); + //SQL: + //SELECT AVG([Id]) AS[idAvg], [Name] AS[name] FROM[Student] GROUP BY[Name],[Id] HAVING(AVG([Id]) > 0 ) // group id,name take first var list3 = db.Queryable() .PartitionBy(it => new { it.Id, it.Name }).Take(1).ToList(); + int count = 0; - //SQL: - //SELECT AVG([Id]) AS[idAvg], [Name] AS[name] FROM[Student] GROUP BY[Name],[Id] HAVING(AVG([Id]) > 0 ) + var list4 = db.Queryable() + .PartitionBy(it => new { it.Id, it.Name }).Take(1).ToPageList(2,3,ref count); //SqlFunc.AggregateSum(object thisValue) //SqlFunc.AggregateAvg(TResult thisValue) diff --git a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs index 9375f2c90..6094bf307 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs @@ -470,8 +470,11 @@ namespace SqlSugar QueryBuilder.ExternalPageIndex = pageIndex; QueryBuilder.ExternalPageSize = pageSize; } - QueryBuilder.Skip = (pageIndex - 1) * pageSize; - QueryBuilder.Take = pageSize; + else + { + QueryBuilder.Skip = (pageIndex - 1) * pageSize; + QueryBuilder.Take = pageSize; + } return ToDataTable(); } public virtual DataTable ToDataTablePage(int pageIndex, int pageSize, ref int totalNumber) @@ -493,8 +496,11 @@ namespace SqlSugar QueryBuilder.ExternalPageIndex = pageIndex; QueryBuilder.ExternalPageSize = pageSize; } - QueryBuilder.Skip = (pageIndex - 1) * pageSize; - QueryBuilder.Take = pageSize; + else + { + QueryBuilder.Skip = (pageIndex - 1) * pageSize; + QueryBuilder.Take = pageSize; + } return ToList(); } public virtual List ToPageList(int pageIndex, int pageSize, ref int totalNumber) diff --git a/Src/Asp.Net/SqlSugar/Abstract/SqlBuilderProvider/QueryBuilder.cs b/Src/Asp.Net/SqlSugar/Abstract/SqlBuilderProvider/QueryBuilder.cs index 0d8fb33a6..52c5e125e 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/SqlBuilderProvider/QueryBuilder.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/SqlBuilderProvider/QueryBuilder.cs @@ -241,8 +241,11 @@ namespace SqlSugar 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(); } - return ToPageSql(sql.ToString(),this.Take,this.Skip); - + var result= ToPageSql(sql.ToString(),this.Take,this.Skip); + if (ExternalPageIndex > 0) { + result = ToPageSql(result,(ExternalPageIndex-1)*ExternalPageSize,ExternalPageSize); + } + return result; } protected virtual string ToPageSql(string sql,int? take,int? skip)