mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-09-19 18:22:23 +08:00
-
This commit is contained in:
@@ -132,7 +132,7 @@ namespace OrmTest.Demo
|
||||
int count = 0;
|
||||
|
||||
var list4 = db.Queryable<Student>()
|
||||
.PartitionBy(it => new { it.Id, it.Name }).Take(1).ToPageList(2,3,ref count);
|
||||
.PartitionBy(it => new { it.Name }).Take(1).ToPageList(2,3,ref count);
|
||||
|
||||
//SqlFunc.AggregateSum(object thisValue)
|
||||
//SqlFunc.AggregateAvg<TResult>(TResult thisValue)
|
||||
|
@@ -129,6 +129,13 @@ namespace SqlSugar
|
||||
return @"SELECT * FROM ({0}) T WHERE RowIndex BETWEEN {1} AND {2}";
|
||||
}
|
||||
}
|
||||
public virtual string ExternalPageTempalte
|
||||
{
|
||||
get
|
||||
{
|
||||
return @"SELECT * FROM ({0}) T WHERE RowIndex2 BETWEEN {1} AND {2}";
|
||||
}
|
||||
}
|
||||
public virtual string DefaultOrderByTemplate
|
||||
{
|
||||
get
|
||||
@@ -244,7 +251,8 @@ namespace SqlSugar
|
||||
if (IsCount) { return sql.ToString(); }
|
||||
var result= ToPageSql(sql.ToString(),this.Take,this.Skip);
|
||||
if (ExternalPageIndex > 0) {
|
||||
result = ToPageSql(result,(ExternalPageIndex-1)*ExternalPageSize,ExternalPageSize);
|
||||
result = string.Format("SELECT *,ROW_NUMBER() OVER(ORDER BY GETDATE()) AS RowIndex2 FROM ({0}) ExternalTable ", result);
|
||||
result = ToPageSql(result, (ExternalPageIndex-1)*ExternalPageSize,ExternalPageSize,true);
|
||||
}
|
||||
this.OrderByValue = oldOrderBy;
|
||||
return result;
|
||||
@@ -255,19 +263,20 @@ namespace SqlSugar
|
||||
return string.Format(" SELECT COUNT(1) FROM ({0}) CountTable ",sql);
|
||||
}
|
||||
|
||||
public virtual string ToPageSql(string sql,int? take,int? skip)
|
||||
public virtual string ToPageSql(string sql,int? take,int? skip,bool isExternal=false)
|
||||
{
|
||||
string temp = isExternal?ExternalPageTempalte:PageTempalte;
|
||||
if (skip != null && take == null)
|
||||
{
|
||||
return string.Format(PageTempalte, sql.ToString(), skip.ObjToInt() + 1, long.MaxValue);
|
||||
return string.Format(temp, sql.ToString(), skip.ObjToInt() + 1, long.MaxValue);
|
||||
}
|
||||
else if (skip == null && take != null)
|
||||
{
|
||||
return string.Format(PageTempalte, sql.ToString(), 1, take.ObjToInt());
|
||||
return string.Format(temp, sql.ToString(), 1, take.ObjToInt());
|
||||
}
|
||||
else if (skip != null && take != null)
|
||||
{
|
||||
return string.Format(PageTempalte, sql.ToString(), skip.ObjToInt() + 1, skip.ObjToInt() + take.ObjToInt());
|
||||
return string.Format(temp, sql.ToString(), skip.ObjToInt() + 1, skip.ObjToInt() + take.ObjToInt());
|
||||
}
|
||||
else
|
||||
{
|
||||
|
Binary file not shown.
Reference in New Issue
Block a user