From 4549bf446c0bbd95a61b00bc9c38e89ccbb67ad3 Mon Sep 17 00:00:00 2001 From: 2881099 <2881099@qq.com> Date: Mon, 13 Jun 2022 19:00:09 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E4=BF=AE=E5=A4=8D=20IIF=20=E4=B8=89?= =?UTF-8?q?=E5=85=83=E8=A1=A8=E8=BE=BE=E5=BC=8F=E6=A0=91=E8=A7=A3=E6=9E=90?= =?UTF-8?q?=20bool=20HasValue=20=E9=97=AE=E9=A2=98=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../FreeSql.Tests/SqlServer/SqlServerExpression/OtherTest.cs | 3 +++ FreeSql/Internal/CommonExpression.cs | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/FreeSql.Tests/FreeSql.Tests/SqlServer/SqlServerExpression/OtherTest.cs b/FreeSql.Tests/FreeSql.Tests/SqlServer/SqlServerExpression/OtherTest.cs index 0cc5b7d6..94c1cfb1 100644 --- a/FreeSql.Tests/FreeSql.Tests/SqlServer/SqlServerExpression/OtherTest.cs +++ b/FreeSql.Tests/FreeSql.Tests/SqlServer/SqlServerExpression/OtherTest.cs @@ -39,6 +39,9 @@ namespace FreeSql.Tests.SqlServerExpression [Fact] public void Boolean() { + var s1 = select.Where(a => a.testFieldBoolNullable.HasValue).ToList(); + var s2 = select.GroupBy(a => new { IsCheck = a.testFieldBoolNullable.HasValue ? true : false }).ToList(g => g.Key); + var t1 = select.Where(a => a.testFieldBool == true).ToList(); var t2 = select.Where(a => a.testFieldBool != true).ToList(); var t3 = select.Where(a => a.testFieldBool == false).ToList(); diff --git a/FreeSql/Internal/CommonExpression.cs b/FreeSql/Internal/CommonExpression.cs index 11a33573..9b13cb3c 100644 --- a/FreeSql/Internal/CommonExpression.cs +++ b/FreeSql/Internal/CommonExpression.cs @@ -691,7 +691,7 @@ namespace FreeSql.Internal } } } - if (leftExp.Type.NullableTypeOrThis() == typeof(bool) && (leftExp.NodeType != ExpressionType.MemberAccess && rightExp.NodeType != ExpressionType.MemberAccess)) + if (leftExp.Type.NullableTypeOrThis() == typeof(bool) && (left.EndsWith(" IS NOT NULL") || left.EndsWith(" IS NULL") || leftExp.NodeType != ExpressionType.MemberAccess && rightExp.NodeType != ExpressionType.MemberAccess)) { var leftExpCall = leftExp as MethodCallExpression; if (leftExpCall == null || !(leftExpCall.Method.DeclaringType == typeof(SqlExt) && leftExpCall.Method.Name == nameof(SqlExt.IsNull)))