diff --git a/Src/Asp.Net/SqlSugar/ExpressionsToSql/Common/ExpressionTool.cs b/Src/Asp.Net/SqlSugar/ExpressionsToSql/Common/ExpressionTool.cs index 91d2f4b5d..2d9a555be 100644 --- a/Src/Asp.Net/SqlSugar/ExpressionsToSql/Common/ExpressionTool.cs +++ b/Src/Asp.Net/SqlSugar/ExpressionsToSql/Common/ExpressionTool.cs @@ -10,7 +10,24 @@ namespace SqlSugar { public class ExpressionTool { - + internal static string ResolveMemberValue(ExpressionContext context, Expression item, string value) + { + if (item is MemberExpression member) + { + if (member.Expression is ParameterExpression parameterExpression) + { + if (value != null && value.Contains("(") && !value.Contains(" ")) + { + var guid = Guid.NewGuid() + ""; + var guid2 = Guid.NewGuid() + ""; + value = value.Replace("(", guid).Replace(")", guid2); + value = context.GetTranslationColumnName(value); + value = value.Replace(guid, "(").Replace(guid2, ")"); + } + } + } + return value; + } internal static Expression GetConditionalExpression(Expression item) { ConstantExpression trueConstant = Expression.Constant(true, typeof(bool)); diff --git a/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/BaseResolve_Item.cs b/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/BaseResolve_Item.cs index a493466a4..14872eadf 100644 --- a/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/BaseResolve_Item.cs +++ b/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/BaseResolve_Item.cs @@ -386,31 +386,12 @@ namespace SqlSugar this.Start(); parameter.IsAppendResult(); var value = parameter.CommonTempData.ObjToString(); - value = ResolveMemberValue(item, value); + value =ExpressionTool.ResolveMemberValue(this.Context,item, value); this.Context.Result.Append(this.Context.GetAsString2(asName, value)); this.Context.Result.CurrentParameter = null; } } - - protected string ResolveMemberValue(Expression item, string value) - { - if (item is MemberExpression member) - { - if (member.Expression is ParameterExpression parameterExpression) - { - if (value != null && value.Contains("(") && !value.Contains(" ")) - { - var guid = Guid.NewGuid() + ""; - var guid2 = Guid.NewGuid() + ""; - value = value.Replace("(", guid).Replace(")", guid2); - value = this.Context.GetTranslationColumnName(value); - value = value.Replace(guid, "(").Replace(guid2, ")"); - } - } - } - return value; - } - + private void ResolveMemberConst(ExpressionParameter parameter, Expression item, string asName) { this.Expression = item; diff --git a/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve_Helper.cs b/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve_Helper.cs index eddedc7b0..99f96a372 100644 --- a/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve_Helper.cs +++ b/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve_Helper.cs @@ -451,6 +451,10 @@ namespace SqlSugar IsMember = parameter.ChildExpression is MemberExpression && !ExpressionTool.IsConstExpression(parameter.ChildExpression as MemberExpression), MemberName = parameter.CommonTempData }; + if (methodCallExpressionArgs.MemberName is string) + { + methodCallExpressionArgs.MemberName = ExpressionTool.ResolveMemberValue(this.Context, item, methodCallExpressionArgs.MemberName?.ToString()); + } if (methodCallExpressionArgs.MemberName is MapperSql) { methodCallExpressionArgs.MemberName = (methodCallExpressionArgs.MemberName as MapperSql).Sql;