diff --git a/Src/Asp.Net/MySqlTest/Demos/8_JoinSql.cs b/Src/Asp.Net/MySqlTest/Demos/8_JoinSql.cs index 78adb85b8..9d65f8c6f 100644 --- a/Src/Asp.Net/MySqlTest/Demos/8_JoinSql.cs +++ b/Src/Asp.Net/MySqlTest/Demos/8_JoinSql.cs @@ -1,5 +1,6 @@ using OrmTest.Demo; using OrmTest.Models; +using SqlSugar; using System; using System.Collections.Generic; using System.Linq; @@ -16,6 +17,19 @@ namespace OrmTest.Demo { Where(); OrderBy(); + SelectMerge(); + } + + private static void SelectMerge() + { + var db = GetInstance(); + //page join + var pageJoin = db.Queryable((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() diff --git a/Src/Asp.Net/MySqlTest/Program.cs b/Src/Asp.Net/MySqlTest/Program.cs index 6d5401148..cea8c21c8 100644 --- a/Src/Asp.Net/MySqlTest/Program.cs +++ b/Src/Asp.Net/MySqlTest/Program.cs @@ -43,7 +43,7 @@ namespace OrmTest OrmTest.Demo.JoinSql.Init(); OrmTest.Demo.Filter.Init(); OrmTest.Demo.ComplexModel.Init(); - OrmTest.Demo.CodeFirst.Init(); + OrmTest.Demo.CodeFirst.Init();; } } } diff --git a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs index ad455f84f..dbf892e68 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs @@ -410,6 +410,14 @@ namespace SqlSugar QueryBuilder.SelectValue = selectValue; return this; } + public virtual ISugarQueryable 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().AS(tableName).Select("*"); + } public virtual int Count() { diff --git a/Src/Asp.Net/SqlSugar/Interface/IQueryable.cs b/Src/Asp.Net/SqlSugar/Interface/IQueryable.cs index 9f6c7a491..1f8f1b24f 100644 --- a/Src/Asp.Net/SqlSugar/Interface/IQueryable.cs +++ b/Src/Asp.Net/SqlSugar/Interface/IQueryable.cs @@ -62,7 +62,7 @@ namespace SqlSugar ISugarQueryable Select(Expression> expression); ISugarQueryable Select(string select); ISugarQueryable Select(string select); - + ISugarQueryable SelectMergeAsTable(); int Count(); TResult Max(string maxField);