diff --git a/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/BinaryExpressionResolve.cs b/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/BinaryExpressionResolve.cs index fb438672a..ef1e330b0 100644 --- a/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/BinaryExpressionResolve.cs +++ b/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/BinaryExpressionResolve.cs @@ -46,6 +46,11 @@ namespace SqlSugar base.ExactExpression = expression; var leftExpression = expression.Left; var rightExpression = expression.Right; + if (RightIsHasValue(leftExpression, rightExpression,ExpressionTool.IsLogicOperator(expression))) + { + Expression trueValue = Expression.Constant(true); + rightExpression = ExpressionBuilderHelper.CreateExpression(rightExpression, trueValue, ExpressionType.And); + } var leftIsBinary = leftExpression is BinaryExpression; var rightBinary = rightExpression is BinaryExpression; var lbrs = leftIsBinary && !rightBinary; @@ -213,5 +218,15 @@ namespace SqlSugar } return true; } + + private static bool RightIsHasValue(Expression leftExpression, Expression rightExpression,bool isLogic) + { + return isLogic&& + leftExpression.Type == UtilConstants.BoolType && + rightExpression.Type == UtilConstants.BoolType && + rightExpression is MethodCallExpression && + (rightExpression as MethodCallExpression).Method.Name == "HasValue"; + } + } }