This commit is contained in:
sunkaixuan
2017-07-14 03:03:49 +08:00
parent 262c3eddc1
commit 50065ccbf7
3 changed files with 17 additions and 8 deletions

View File

@@ -132,7 +132,7 @@ namespace OrmTest.Demo
int count = 0; int count = 0;
var list4 = db.Queryable<Student>() 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.AggregateSum(object thisValue)
//SqlFunc.AggregateAvg<TResult>(TResult thisValue) //SqlFunc.AggregateAvg<TResult>(TResult thisValue)

View File

@@ -129,6 +129,13 @@ namespace SqlSugar
return @"SELECT * FROM ({0}) T WHERE RowIndex BETWEEN {1} AND {2}"; 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 public virtual string DefaultOrderByTemplate
{ {
get get
@@ -244,7 +251,8 @@ namespace SqlSugar
if (IsCount) { return sql.ToString(); } if (IsCount) { return sql.ToString(); }
var result= ToPageSql(sql.ToString(),this.Take,this.Skip); var result= ToPageSql(sql.ToString(),this.Take,this.Skip);
if (ExternalPageIndex > 0) { 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; this.OrderByValue = oldOrderBy;
return result; return result;
@@ -254,27 +262,28 @@ namespace SqlSugar
return string.Format(" SELECT COUNT(1) FROM ({0}) CountTable ",sql); 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) 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) 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) 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 else
{ {
return sql.ToString(); return sql.ToString();
} }
} }
public virtual string ToJoinString(JoinQueryInfo joinInfo) public virtual string ToJoinString(JoinQueryInfo joinInfo)
{ {
return string.Format( return string.Format(