diff --git a/Src/Asp.Net/SqlSugar/ExpressionsToSql/Common/ExpressionTool.cs b/Src/Asp.Net/SqlSugar/ExpressionsToSql/Common/ExpressionTool.cs index a2ebd609b..6c96ad604 100644 --- a/Src/Asp.Net/SqlSugar/ExpressionsToSql/Common/ExpressionTool.cs +++ b/Src/Asp.Net/SqlSugar/ExpressionsToSql/Common/ExpressionTool.cs @@ -546,5 +546,18 @@ namespace SqlSugar } return result; } + + internal static bool IsSubQuery(Expression it) + { + if (it is MethodCallExpression) + { + var method = (MethodCallExpression)it; + if (method.Object != null && method.Object.Type.Name.StartsWith("Subquery")) + { + return true; + } + } + return false; + } } } diff --git a/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve.cs b/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve.cs index 3fa4f8749..1bcf69649 100644 --- a/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve.cs +++ b/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve.cs @@ -489,6 +489,21 @@ namespace SqlSugar { item = (item as UnaryExpression).Operand; } + if (this.Context.IsSingle&& args.Any(it=>ExpressionTool.IsSubQuery(it))&&base.BaseParameter?.BaseParameter?.BaseParameter?.CurrentExpression!=null) + { + var exp = base.BaseParameter?.BaseParameter?.BaseParameter?.CurrentExpression; + if (exp is LambdaExpression) + { + var lamExp = (exp as LambdaExpression); + if (lamExp.Parameters != null && lamExp.Parameters.Count == 1) + { + if (this.Context.CurrentShortName == null) + { + this.Context.SingleTableNameSubqueryShortName = lamExp.Parameters.First().Name; + } + } + } + } var isBinaryExpression = item is BinaryExpression || item is MethodCallExpression; var isConst = item is ConstantExpression; var isIIF = name == "IIF";