diff --git a/Src/Asp.Net/MySqlTest/Demos/8_JoinSql.cs b/Src/Asp.Net/MySqlTest/Demos/8_JoinSql.cs index 9d65f8c6f..1c5026c3f 100644 --- a/Src/Asp.Net/MySqlTest/Demos/8_JoinSql.cs +++ b/Src/Asp.Net/MySqlTest/Demos/8_JoinSql.cs @@ -28,7 +28,7 @@ namespace OrmTest.Demo 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 + .MergeTable().Where(XXX=>XXX.id==1).OrderBy("name asc").ToList();// Prefix, is, not, necessary, and take the columns in select } diff --git a/Src/Asp.Net/SqlServerTest/Demos/1_Query.cs b/Src/Asp.Net/SqlServerTest/Demos/1_Query.cs index b41c72ec3..287222349 100644 --- a/Src/Asp.Net/SqlServerTest/Demos/1_Query.cs +++ b/Src/Asp.Net/SqlServerTest/Demos/1_Query.cs @@ -299,6 +299,12 @@ namespace OrmTest.Demo var list8 = db.Queryable((st, sc, sc2) => st.SchoolId == sc.Id && sc.Id == sc2.Id) .OrderBy(st=>st.Id) .Select((st, sc, sc2) => new { st.Name, st.Id, schoolName = sc.Name, schoolName2 = sc2.Name }).ToPageList(1, 2); + + //In + var list9 = db.Queryable("it") + .OrderBy(it => it.Id) + .In(it => it.Id,db.Queryable().Where("it.id=schoolId").Select(it=>it.Id)) + .ToList(); } public static void Funs() { diff --git a/Src/Asp.Net/SqlServerTest/Demos/8_JoinSql.cs b/Src/Asp.Net/SqlServerTest/Demos/8_JoinSql.cs index b7f84092b..de6470e9c 100644 --- a/Src/Asp.Net/SqlServerTest/Demos/8_JoinSql.cs +++ b/Src/Asp.Net/SqlServerTest/Demos/8_JoinSql.cs @@ -27,7 +27,7 @@ namespace OrmTest.Demo 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 + .MergeTable().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/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs index dbf892e68..c99c2e7eb 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs @@ -259,19 +259,12 @@ namespace SqlSugar return In(expression, inValues.ToArray()); } - public virtual ISugarQueryable In(Expression> expression, ISugarQueryable childQueryExpression) { - var sqlObj=childQueryExpression.ToSql(); - if (sqlObj.Value.IsValuable()) { - this.QueryBuilder.Parameters.AddRange(sqlObj.Value); - } - var isSingle = QueryBuilder.IsSingle(); - var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); - var fieldName = lamResult.GetResultString(); - var whereSql = string.Format(this.QueryBuilder.InTemplate, fieldName, sqlObj.Key); - this.QueryBuilder.WhereInfos.Add(SqlBuilder.AppendWhereOrAnd(this.QueryBuilder.WhereInfos.IsNullOrEmpty(),whereSql)); + public virtual ISugarQueryable In(Expression> expression, ISugarQueryable childQueryExpression) + { + var sqlObj = childQueryExpression.ToSql(); + _InQueryable(expression, sqlObj); return this; } - public virtual ISugarQueryable OrderBy(string orderFileds) { var orderByValue = QueryBuilder.OrderByValue; @@ -410,12 +403,12 @@ namespace SqlSugar QueryBuilder.SelectValue = selectValue; return this; } - public virtual ISugarQueryable SelectMergeAsTable() + public virtual ISugarQueryable MergeTable() { - 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 "); + Check.Exception(this.QueryBuilder.SelectValue.IsNullOrEmpty(), "MergeTable need to use Select(it=>new{}) Method ."); + Check.Exception(this.QueryBuilder.Skip > 0 || this.QueryBuilder.Take > 0, "MergeTable Queryable cannot Take Skip OrderBy PageToList "); var sql = QueryBuilder.ToSqlString(); - var tableName = (string.Format("({0}) MergeAsTable ", sql)); + var tableName = (string.Format("({0}) MergeTable ", sql)); return this.Context.Queryable().AS(tableName).Select("*"); } @@ -683,6 +676,18 @@ namespace SqlSugar SetContextModel(result, entityType); return result; } + protected void _InQueryable(Expression> expression, KeyValuePair> sqlObj) + { + if (sqlObj.Value.IsValuable()) + { + this.QueryBuilder.Parameters.AddRange(sqlObj.Value); + } + var isSingle = QueryBuilder.IsSingle(); + var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); + var fieldName = lamResult.GetResultString(); + var whereSql = string.Format(this.QueryBuilder.InTemplate, fieldName, sqlObj.Key); + this.QueryBuilder.WhereInfos.Add(SqlBuilder.AppendWhereOrAnd(this.QueryBuilder.WhereInfos.IsNullOrEmpty(), whereSql)); + } protected List GetPrimaryKeys() { @@ -837,6 +842,31 @@ namespace SqlSugar return _Avg(expression); } #endregion + + #region In + public new ISugarQueryable In(Expression> expression, params FieldType[] inValues) + { + var isSingle = QueryBuilder.IsSingle(); + var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); + var fieldName = lamResult.GetResultString(); + In(fieldName, inValues); + return this; + } + public new ISugarQueryable In(Expression> expression, List inValues) + { + var isSingle = QueryBuilder.IsSingle(); + var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); + var fieldName = lamResult.GetResultString(); + In(fieldName, inValues); + return this; + } + public new ISugarQueryable In(Expression> expression, ISugarQueryable childQueryExpression) + { + var sqlObj = childQueryExpression.ToSql(); + _InQueryable(expression, sqlObj); + return this; + } + #endregion } #endregion #region T3 @@ -964,6 +994,31 @@ namespace SqlSugar return _Avg(expression); } #endregion + + #region In + public new ISugarQueryable In(Expression> expression, params FieldType[] inValues) + { + var isSingle = QueryBuilder.IsSingle(); + var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); + var fieldName = lamResult.GetResultString(); + In(fieldName, inValues); + return this; + } + public new ISugarQueryable In(Expression> expression, List inValues) + { + var isSingle = QueryBuilder.IsSingle(); + var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); + var fieldName = lamResult.GetResultString(); + In(fieldName, inValues); + return this; + } + public new ISugarQueryable In(Expression> expression, ISugarQueryable childQueryExpression) + { + var sqlObj = childQueryExpression.ToSql(); + _InQueryable(expression, sqlObj); + return this; + } + #endregion } #endregion #region T4 @@ -1112,6 +1167,31 @@ namespace SqlSugar return _Avg(expression); } #endregion + + #region In + public new ISugarQueryable In(Expression> expression, params FieldType[] inValues) + { + var isSingle = QueryBuilder.IsSingle(); + var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); + var fieldName = lamResult.GetResultString(); + In(fieldName, inValues); + return this; + } + public new ISugarQueryable In(Expression> expression, List inValues) + { + var isSingle = QueryBuilder.IsSingle(); + var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); + var fieldName = lamResult.GetResultString(); + In(fieldName, inValues); + return this; + } + public new ISugarQueryable In(Expression> expression, ISugarQueryable childQueryExpression) + { + var sqlObj = childQueryExpression.ToSql(); + _InQueryable(expression, sqlObj); + return this; + } + #endregion } #endregion #region T5 @@ -1286,6 +1366,31 @@ namespace SqlSugar return _Avg(expression); } #endregion + + #region In + public new ISugarQueryable In(Expression> expression, params FieldType[] inValues) + { + var isSingle = QueryBuilder.IsSingle(); + var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); + var fieldName = lamResult.GetResultString(); + In(fieldName, inValues); + return this; + } + public new ISugarQueryable In(Expression> expression, List inValues) + { + var isSingle = QueryBuilder.IsSingle(); + var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); + var fieldName = lamResult.GetResultString(); + In(fieldName, inValues); + return this; + } + public new ISugarQueryable In(Expression> expression, ISugarQueryable childQueryExpression) + { + var sqlObj = childQueryExpression.ToSql(); + _InQueryable(expression, sqlObj); + return this; + } + #endregion } #endregion #region T6 @@ -1486,6 +1591,31 @@ namespace SqlSugar return _Avg(expression); } #endregion + + #region In + public new ISugarQueryable In(Expression> expression, params FieldType[] inValues) + { + var isSingle = QueryBuilder.IsSingle(); + var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); + var fieldName = lamResult.GetResultString(); + In(fieldName, inValues); + return this; + } + public new ISugarQueryable In(Expression> expression, List inValues) + { + var isSingle = QueryBuilder.IsSingle(); + var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); + var fieldName = lamResult.GetResultString(); + In(fieldName, inValues); + return this; + } + public new ISugarQueryable In(Expression> expression, ISugarQueryable childQueryExpression) + { + var sqlObj = childQueryExpression.ToSql(); + _InQueryable(expression, sqlObj); + return this; + } + #endregion } #endregion #region T7 @@ -1713,6 +1843,31 @@ namespace SqlSugar return _Avg(expression); } #endregion + + #region In + public new ISugarQueryable In(Expression> expression, params FieldType[] inValues) + { + var isSingle = QueryBuilder.IsSingle(); + var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); + var fieldName = lamResult.GetResultString(); + In(fieldName, inValues); + return this; + } + public new ISugarQueryable In(Expression> expression, List inValues) + { + var isSingle = QueryBuilder.IsSingle(); + var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); + var fieldName = lamResult.GetResultString(); + In(fieldName, inValues); + return this; + } + public new ISugarQueryable In(Expression> expression, ISugarQueryable childQueryExpression) + { + var sqlObj = childQueryExpression.ToSql(); + _InQueryable(expression, sqlObj); + return this; + } + #endregion } #endregion #region T8 @@ -1966,6 +2121,31 @@ namespace SqlSugar return _Avg(expression); } #endregion + + #region In + public new ISugarQueryable In(Expression> expression, params FieldType[] inValues) + { + var isSingle = QueryBuilder.IsSingle(); + var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); + var fieldName = lamResult.GetResultString(); + In(fieldName, inValues); + return this; + } + public new ISugarQueryable In(Expression> expression, List inValues) + { + var isSingle = QueryBuilder.IsSingle(); + var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); + var fieldName = lamResult.GetResultString(); + In(fieldName, inValues); + return this; + } + public new ISugarQueryable In(Expression> expression, ISugarQueryable childQueryExpression) + { + var sqlObj = childQueryExpression.ToSql(); + _InQueryable(expression, sqlObj); + return this; + } + #endregion } #endregion #region T9 @@ -2242,6 +2422,31 @@ namespace SqlSugar return _Avg(expression); } #endregion + + #region In + public new ISugarQueryable In(Expression> expression, params FieldType[] inValues) + { + var isSingle = QueryBuilder.IsSingle(); + var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); + var fieldName = lamResult.GetResultString(); + In(fieldName, inValues); + return this; + } + public new ISugarQueryable In(Expression> expression, List inValues) + { + var isSingle = QueryBuilder.IsSingle(); + var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); + var fieldName = lamResult.GetResultString(); + In(fieldName, inValues); + return this; + } + public new ISugarQueryable In(Expression> expression, ISugarQueryable childQueryExpression) + { + var sqlObj = childQueryExpression.ToSql(); + _InQueryable(expression, sqlObj); + return this; + } + #endregion } #endregion #region T10 @@ -2542,6 +2747,31 @@ namespace SqlSugar return _Avg(expression); } #endregion + + #region In + public new ISugarQueryable In(Expression> expression, params FieldType[] inValues) + { + var isSingle = QueryBuilder.IsSingle(); + var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); + var fieldName = lamResult.GetResultString(); + In(fieldName, inValues); + return this; + } + public new ISugarQueryable In(Expression> expression, List inValues) + { + var isSingle = QueryBuilder.IsSingle(); + var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); + var fieldName = lamResult.GetResultString(); + In(fieldName, inValues); + return this; + } + public new ISugarQueryable In(Expression> expression, ISugarQueryable childQueryExpression) + { + var sqlObj = childQueryExpression.ToSql(); + _InQueryable(expression, sqlObj); + return this; + } + #endregion } #endregion #region T11 @@ -2867,6 +3097,31 @@ namespace SqlSugar return _Avg(expression); } #endregion + + #region In + public new ISugarQueryable In(Expression> expression, params FieldType[] inValues) + { + var isSingle = QueryBuilder.IsSingle(); + var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); + var fieldName = lamResult.GetResultString(); + In(fieldName, inValues); + return this; + } + public new ISugarQueryable In(Expression> expression, List inValues) + { + var isSingle = QueryBuilder.IsSingle(); + var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); + var fieldName = lamResult.GetResultString(); + In(fieldName, inValues); + return this; + } + public new ISugarQueryable In(Expression> expression, ISugarQueryable childQueryExpression) + { + var sqlObj = childQueryExpression.ToSql(); + _InQueryable(expression, sqlObj); + return this; + } + #endregion } #endregion #region T12 @@ -3217,6 +3472,28 @@ namespace SqlSugar return _Avg(expression); } #endregion + + #region In + public new ISugarQueryable In(Expression> expression, params FieldType[] inValues) { + var isSingle = QueryBuilder.IsSingle(); + var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); + var fieldName = lamResult.GetResultString(); + In(fieldName, inValues); + return this; + } + public new ISugarQueryable In(Expression> expression, List inValues) { + var isSingle = QueryBuilder.IsSingle(); + var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple); + var fieldName = lamResult.GetResultString(); + In(fieldName, inValues); + return this; + } + public new ISugarQueryable In(Expression> expression, ISugarQueryable childQueryExpression) { + var sqlObj = childQueryExpression.ToSql(); + _InQueryable(expression, sqlObj); + return this; + } + #endregion } #endregion } diff --git a/Src/Asp.Net/SqlSugar/Interface/IQueryable.cs b/Src/Asp.Net/SqlSugar/Interface/IQueryable.cs index 1f8f1b24f..e72d4a6cd 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(); + ISugarQueryable MergeTable(); int Count(); TResult Max(string maxField); @@ -125,6 +125,12 @@ namespace SqlSugar TResult Sum(Expression> expression); TResult Avg(Expression> expression); #endregion + + #region In + new ISugarQueryable In(Expression> expression, params FieldType[] inValues); + new ISugarQueryable In(Expression> expression, List inValues); + new ISugarQueryable In(Expression> expression, ISugarQueryable childQueryExpression); + #endregion } public partial interface ISugarQueryable : ISugarQueryable { @@ -164,6 +170,12 @@ namespace SqlSugar TResult Sum(Expression> expression); TResult Avg(Expression> expression); #endregion + + #region In + new ISugarQueryable In(Expression> expression, params FieldType[] inValues); + new ISugarQueryable In(Expression> expression, List inValues); + new ISugarQueryable In(Expression> expression, ISugarQueryable childQueryExpression); + #endregion } public partial interface ISugarQueryable : ISugarQueryable { @@ -208,6 +220,12 @@ namespace SqlSugar TResult Sum(Expression> expression); TResult Avg(Expression> expression); #endregion + + #region In + new ISugarQueryable In(Expression> expression, params FieldType[] inValues); + new ISugarQueryable In(Expression> expression, List inValues); + new ISugarQueryable In(Expression> expression, ISugarQueryable childQueryExpression); + #endregion } public partial interface ISugarQueryable : ISugarQueryable { @@ -258,6 +276,12 @@ namespace SqlSugar TResult Sum(Expression> expression); TResult Avg(Expression> expression); #endregion + + #region In + new ISugarQueryable In(Expression> expression, params FieldType[] inValues); + new ISugarQueryable In(Expression> expression, List inValues); + new ISugarQueryable In(Expression> expression, ISugarQueryable childQueryExpression); + #endregion } public partial interface ISugarQueryable : ISugarQueryable { @@ -312,6 +336,12 @@ namespace SqlSugar TResult Sum(Expression> expression); TResult Avg(Expression> expression); #endregion + + #region In + new ISugarQueryable In(Expression> expression, params FieldType[] inValues); + new ISugarQueryable In(Expression> expression, List inValues); + new ISugarQueryable In(Expression> expression, ISugarQueryable childQueryExpression); + #endregion } public partial interface ISugarQueryable : ISugarQueryable { @@ -371,6 +401,12 @@ namespace SqlSugar TResult Sum(Expression> expression); TResult Avg(Expression> expression); #endregion + + #region In + new ISugarQueryable In(Expression> expression, params FieldType[] inValues); + new ISugarQueryable In(Expression> expression, List inValues); + new ISugarQueryable In(Expression> expression, ISugarQueryable childQueryExpression); + #endregion } public partial interface ISugarQueryable : ISugarQueryable { @@ -435,6 +471,12 @@ namespace SqlSugar TResult Sum(Expression> expression); TResult Avg(Expression> expression); #endregion + + #region In + new ISugarQueryable In(Expression> expression, params FieldType[] inValues); + new ISugarQueryable In(Expression> expression, List inValues); + new ISugarQueryable In(Expression> expression, ISugarQueryable childQueryExpression); + #endregion } #region 9-12 @@ -506,6 +548,12 @@ namespace SqlSugar TResult Sum(Expression> expression); TResult Avg(Expression> expression); #endregion + + #region In + new ISugarQueryable In(Expression> expression, params FieldType[] inValues); + new ISugarQueryable In(Expression> expression, List inValues); + new ISugarQueryable In(Expression> expression, ISugarQueryable childQueryExpression); + #endregion } public partial interface ISugarQueryable : ISugarQueryable { @@ -580,6 +628,12 @@ namespace SqlSugar TResult Sum(Expression> expression); TResult Avg(Expression> expression); #endregion + + #region In + new ISugarQueryable In(Expression> expression, params FieldType[] inValues); + new ISugarQueryable In(Expression> expression, List inValues); + new ISugarQueryable In(Expression> expression, ISugarQueryable childQueryExpression); + #endregion } public partial interface ISugarQueryable : ISugarQueryable { @@ -659,6 +713,12 @@ namespace SqlSugar TResult Sum(Expression> expression); TResult Avg(Expression> expression); #endregion + + #region In + new ISugarQueryable In(Expression> expression, params FieldType[] inValues); + new ISugarQueryable In(Expression> expression, List inValues); + new ISugarQueryable In(Expression> expression, ISugarQueryable childQueryExpression); + #endregion } public partial interface ISugarQueryable : ISugarQueryable { @@ -743,6 +803,12 @@ namespace SqlSugar TResult Sum(Expression> expression); TResult Avg(Expression> expression); #endregion + + #region In + new ISugarQueryable In(Expression> expression, params FieldType[] inValues); + new ISugarQueryable In(Expression> expression, List inValues); + new ISugarQueryable In(Expression> expression, ISugarQueryable childQueryExpression); + #endregion } #endregion }