diff --git a/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/Common/ExpressionTool.cs b/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/Common/ExpressionTool.cs index 32269871e..71c8a5803 100644 --- a/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/Common/ExpressionTool.cs +++ b/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/Common/ExpressionTool.cs @@ -281,6 +281,15 @@ namespace SqlSugar expression.NodeType != ExpressionType.Or && expression.NodeType != ExpressionType.OrElse; } + public static bool IsEqualOrLtOrGt(Expression expression) + { + return expression.NodeType== ExpressionType.Equal|| + expression.NodeType == ExpressionType.GreaterThan|| + expression.NodeType == ExpressionType.LessThan|| + expression.NodeType == ExpressionType.LessThanOrEqual || + expression.NodeType == ExpressionType.GreaterThanOrEqual + ; + } public static object GetMemberValue(MemberInfo member, Expression expression) { var rootExpression = expression as MemberExpression; diff --git a/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/ResolveItems/BaseResolve_Item.cs b/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/ResolveItems/BaseResolve_Item.cs index 66c983c03..5a17f73a3 100644 --- a/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/ResolveItems/BaseResolve_Item.cs +++ b/Src/Asp.NetCore2/SqlSugar/ExpressionsToSql/ResolveItems/BaseResolve_Item.cs @@ -244,7 +244,25 @@ namespace SqlSugar { this.Context.Parameters.AddRange(newContext.Parameters); } - this.Context.Result.Append(this.Context.GetAsString(asName, newContext.Result.GetString())); + if (ExpressionTool.IsEqualOrLtOrGt(item)) + { + var sql = newContext.Result.GetString(); + var pTrue = AppendParameter(true); + var pFalse = AppendParameter(false); + sql =this.Context.DbMehtods.IIF(new MethodCallExpressionModel() { + Args=new List() + { + new MethodCallExpressionArgs(){ MemberName=sql,MemberValue=sql,IsMember=true } , + new MethodCallExpressionArgs(){ MemberName=pTrue,MemberValue=pTrue,IsMember=true }, + new MethodCallExpressionArgs(){ MemberName=pFalse,MemberValue=pFalse,IsMember=true } + } + }); + this.Context.Result.Append(this.Context.GetAsString(asName, sql)); + } + else + { + this.Context.Result.Append(this.Context.GetAsString(asName, newContext.Result.GetString())); + } this.Context.Result.CurrentParameter = null; if (this.Context.SingleTableNameSubqueryShortName.IsNullOrEmpty() && newContext.SingleTableNameSubqueryShortName.HasValue()) {