ADD SelectMergeAsTable

This commit is contained in:
sunkaixuan 2017-08-25 13:02:50 +08:00
parent 4f1844fa57
commit 8a91c7fb88
4 changed files with 24 additions and 2 deletions

View File

@ -1,5 +1,6 @@
using OrmTest.Demo; using OrmTest.Demo;
using OrmTest.Models; using OrmTest.Models;
using SqlSugar;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
@ -16,6 +17,19 @@ namespace OrmTest.Demo
{ {
Where(); Where();
OrderBy(); OrderBy();
SelectMerge();
}
private static void SelectMerge()
{
var db = GetInstance();
//page join
var pageJoin = db.Queryable<Student, School>((st, sc) => new object[] {
JoinType.Left,st.SchoolId==sc.Id
})
.Select((st,sc)=>new { id=st.Id,name=sc.Name})
.SelectMergeAsTable().Where(XXX=>XXX.id==1).OrderBy("name asc").ToList();// Prefix, is, not, necessary, and take the columns in select
} }
private static void Where() private static void Where()

View File

@ -43,7 +43,7 @@ namespace OrmTest
OrmTest.Demo.JoinSql.Init(); OrmTest.Demo.JoinSql.Init();
OrmTest.Demo.Filter.Init(); OrmTest.Demo.Filter.Init();
OrmTest.Demo.ComplexModel.Init(); OrmTest.Demo.ComplexModel.Init();
OrmTest.Demo.CodeFirst.Init(); OrmTest.Demo.CodeFirst.Init();;
} }
} }
} }

View File

@ -410,6 +410,14 @@ namespace SqlSugar
QueryBuilder.SelectValue = selectValue; QueryBuilder.SelectValue = selectValue;
return this; return this;
} }
public virtual ISugarQueryable<T> SelectMergeAsTable()
{
Check.Exception(this.QueryBuilder.SelectValue.IsNullOrEmpty(), "SelectMergeAsTable need to use Select(it=>new{}) Method .");
Check.Exception(this.QueryBuilder.Skip > 0 || this.QueryBuilder.Take > 0, "SelectMergeAsTable Queryable cannot Take Skip OrderBy PageToList ");
var sql = QueryBuilder.ToSqlString();
var tableName = (string.Format("({0}) MergeAsTable ", sql));
return this.Context.Queryable<ExpandoObject>().AS(tableName).Select<T>("*");
}
public virtual int Count() public virtual int Count()
{ {

View File

@ -62,7 +62,7 @@ namespace SqlSugar
ISugarQueryable<TResult> Select<TResult>(Expression<Func<T, TResult>> expression); ISugarQueryable<TResult> Select<TResult>(Expression<Func<T, TResult>> expression);
ISugarQueryable<TResult> Select<TResult>(string select); ISugarQueryable<TResult> Select<TResult>(string select);
ISugarQueryable<T> Select(string select); ISugarQueryable<T> Select(string select);
ISugarQueryable<T> SelectMergeAsTable();
int Count(); int Count();
TResult Max<TResult>(string maxField); TResult Max<TResult>(string maxField);