From fd317105722d9826346bf576ed1ecc25db77c49e Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Fri, 15 Sep 2017 16:45:30 +0800 Subject: [PATCH] - --- .../ResolveItems/MemberExpressionResolve.cs | 25 +++++++++++++------ 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MemberExpressionResolve.cs b/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MemberExpressionResolve.cs index 3e4b11ff5..856397da1 100644 --- a/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MemberExpressionResolve.cs +++ b/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MemberExpressionResolve.cs @@ -28,7 +28,7 @@ namespace SqlSugar var isHasValue = isLogicOperator && memberName == "HasValue" && expression.Expression != null && expression.NodeType == ExpressionType.MemberAccess; var isDateDate = memberName == "Date" && expression.Expression.Type == UtilConstants.DateType; var isMemberValue = expression.Expression != null && expression.Expression.NodeType != ExpressionType.Parameter && !isValueBool; - + var isSingle = parameter.Context.ResolveType == ResolveExpressType.WhereSingle; if (isLength) { ResolveLength(parameter, isLeft, expression); return; @@ -41,7 +41,10 @@ namespace SqlSugar { ResolveDateValue(parameter, isLeft, expression); return; } - else if (isValueBool) { isValue = false; } + else if (isValueBool) + { + ResolveValueBool(parameter, baseParameter, expression, out fieldName, isLeft, isSingle); return; + } else if (isValue) { expression = expression.Expression as MemberExpression; } else if (isDateDate) { @@ -71,18 +74,13 @@ namespace SqlSugar break; case ResolveExpressType.WhereSingle: case ResolveExpressType.WhereMultiple: - var isSingle = parameter.Context.ResolveType == ResolveExpressType.WhereSingle; if (isSetTempData) { fieldName = GetName(parameter, expression, null, isSingle); baseParameter.CommonTempData = fieldName; break; } - if (isValueBool) - { - fieldName = GetName(parameter, expression.Expression as MemberExpression, isLeft, isSingle); - } - else if (ExpressionTool.IsConstExpression(expression)) + if (ExpressionTool.IsConstExpression(expression)) { var value = ExpressionTool.GetMemberValue(expression.Member, expression); base.AppendValue(parameter, isLeft, value); @@ -116,7 +114,18 @@ namespace SqlSugar } } + #region Resolve special member + private void ResolveValueBool(ExpressionParameter parameter, ExpressionParameter baseParameter, MemberExpression expression, out string fieldName, bool? isLeft, bool isSingle) + { + fieldName = GetName(parameter, expression.Expression as MemberExpression, isLeft, isSingle); + if (expression.Type == UtilConstants.BoolType && baseParameter.OperatorValue.IsNullOrEmpty()) + { + fieldName = "( " + fieldName + "=1 )"; + } + AppendMember(parameter, isLeft, fieldName); + } + private void ResolveMemberValue(ExpressionParameter parameter, ExpressionParameter baseParameter, bool? isLeft, bool isSetTempData, MemberExpression expression) { var value = ExpressionTool.GetMemberValue(expression.Member, expression);