diff --git a/Src/Asp.Net/SqlServerTest/UnitTest/ExpressionTest/Select.cs b/Src/Asp.Net/SqlServerTest/UnitTest/ExpressionTest/Select.cs index fda563a1f..9a5ff983f 100644 --- a/Src/Asp.Net/SqlServerTest/UnitTest/ExpressionTest/Select.cs +++ b/Src/Asp.Net/SqlServerTest/UnitTest/ExpressionTest/Select.cs @@ -27,6 +27,8 @@ namespace OrmTest.UnitTest single4(); single5(); single6(); + single7(); + single8(); Multiple(); Multiple2(); singleDynamic(); @@ -35,6 +37,44 @@ namespace OrmTest.UnitTest base.End("Select Test"); } + private void single7() + { + Expression> exp =it => new DataTestInfo2() { Bool1=it.Bool1 , Bool2=it.Bool2 }; + ExpressionContext expContext = new ExpressionContext(); + expContext.IsSingle = false; + expContext.Resolve(exp, ResolveExpressType.SelectSingle); + var selectorValue = expContext.Result.GetString(); + var pars = expContext.Parameters; + base.Check( + selectorValue, + pars, + @"[Bool1] AS [Bool1] , [Bool2] AS [Bool2] ", + new List() + { + + }, + "Select.single7 Error"); + } + + private void single8() + { + Expression> exp = it => new { Bool1 = it.Bool1, Bool2 = it.Bool2 }; + ExpressionContext expContext = new ExpressionContext(); + expContext.IsSingle = false; + expContext.Resolve(exp, ResolveExpressType.SelectSingle); + var selectorValue = expContext.Result.GetString(); + var pars = expContext.Parameters; + base.Check( + selectorValue, + pars, + @"[Bool1] AS [Bool1] , [Bool2] AS [Bool2] ", + new List() + { + + }, + "Select.single8 Error"); + } + private void Multiple() { Expression> exp = (it, school) => new Student() { Name = "a", Id = it.Id, SchoolId = school.Id, TestId = it.Id + 1 }; diff --git a/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MemberExpressionResolve.cs b/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MemberExpressionResolve.cs index 96d3c0b95..9689d8f0c 100644 --- a/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MemberExpressionResolve.cs +++ b/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MemberExpressionResolve.cs @@ -27,7 +27,7 @@ namespace SqlSugar 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; - var fieldIsBool = isBool && isLogicOperator; + var fieldIsBool = isBool && isLogicOperator&&(parameter.BaseParameter==null||!(parameter.BaseParameter.CurrentExpression is MemberInitExpression|| parameter.BaseParameter.CurrentExpression is NewExpression)); baseParameter.ChildExpression = expression; if (isLength) {