diff --git a/Src/Asp.Net/SqlServerTest/Demos/1_Query.cs b/Src/Asp.Net/SqlServerTest/Demos/1_Query.cs index 7a85025fa..ddbb27819 100644 --- a/Src/Asp.Net/SqlServerTest/Demos/1_Query.cs +++ b/Src/Asp.Net/SqlServerTest/Demos/1_Query.cs @@ -315,6 +315,12 @@ namespace OrmTest.Demo .ToList(); //SELECT st.* FROM [STudent] st ,[School] sc WHERE ( [st].[SchoolId] = [sc].[Id] ) AND [st].[Name] //IN (SELECT [Name] FROM [School] sc2 WHERE id=st.schoolid ) ORDER BY [st].[ID] ASC + + var list11 = db.Queryable((st, sc) => st.SchoolId == sc.Id) + .In(st => st.Name, db.Queryable("sc2").Where(it=>it.Id==1).Where("id=st.schoolid").Select(it => it.Name)) + .OrderBy(st => st.Id) + .Select(st => st) + .ToList(); } public static void Funs() { diff --git a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableAccessory.cs b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableAccessory.cs index f9fba01b0..21f64cf66 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableAccessory.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableAccessory.cs @@ -11,5 +11,6 @@ namespace SqlSugar { protected ILambdaExpressions _LambdaExpressions; protected bool _RestoreMapping = true; + protected int _InQueryableIndex = 100; } } diff --git a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs index 81fdd3737..dd6ed862d 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs @@ -678,15 +678,18 @@ namespace SqlSugar } protected void _InQueryable(Expression> expression, KeyValuePair> sqlObj) { + string sql = sqlObj.Key; if (sqlObj.Value.IsValuable()) { + this.SqlBuilder.RepairReplicationParameters(ref sql,sqlObj.Value.ToArray(),100); 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); + var whereSql = string.Format(this.QueryBuilder.InTemplate, fieldName, sql); this.QueryBuilder.WhereInfos.Add(SqlBuilder.AppendWhereOrAnd(this.QueryBuilder.WhereInfos.IsNullOrEmpty(), whereSql)); + base._InQueryableIndex += 100; } protected List GetPrimaryKeys() diff --git a/Src/Asp.Net/SqlSugar/Interface/ISqlBuilder.cs b/Src/Asp.Net/SqlSugar/Interface/ISqlBuilder.cs index 7052158f8..c4467fd27 100644 --- a/Src/Asp.Net/SqlSugar/Interface/ISqlBuilder.cs +++ b/Src/Asp.Net/SqlSugar/Interface/ISqlBuilder.cs @@ -27,5 +27,6 @@ namespace SqlSugar string GetTranslationColumnName(string propertyName); string GetNoTranslationColumnName(string name); string GetPackTable(string sql,string shortName); + void RepairReplicationParameters(ref string appendSql, SugarParameter[] parameters, int addIndex); } }