Skip to content

Commit 4549bf4

Browse files
committed
- 修复 IIF 三元表达式树解析 bool HasValue 问题;
1 parent d55ddf4 commit 4549bf4

File tree

2 files changed

+4
-1
lines changed

2 files changed

+4
-1
lines changed

FreeSql.Tests/FreeSql.Tests/SqlServer/SqlServerExpression/OtherTest.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,9 @@ public void Div()
3939
[Fact]
4040
public void Boolean()
4141
{
42+
var s1 = select.Where(a => a.testFieldBoolNullable.HasValue).ToList();
43+
var s2 = select.GroupBy(a => new { IsCheck = a.testFieldBoolNullable.HasValue ? true : false }).ToList(g => g.Key);
44+
4245
var t1 = select.Where(a => a.testFieldBool == true).ToList();
4346
var t2 = select.Where(a => a.testFieldBool != true).ToList();
4447
var t3 = select.Where(a => a.testFieldBool == false).ToList();

FreeSql/Internal/CommonExpression.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -691,7 +691,7 @@ rightExp is UnaryExpression rightExpUexp &&
691691
}
692692
}
693693
}
694-
if (leftExp.Type.NullableTypeOrThis() == typeof(bool) && (leftExp.NodeType != ExpressionType.MemberAccess && rightExp.NodeType != ExpressionType.MemberAccess))
694+
if (leftExp.Type.NullableTypeOrThis() == typeof(bool) && (left.EndsWith(" IS NOT NULL") || left.EndsWith(" IS NULL") || leftExp.NodeType != ExpressionType.MemberAccess && rightExp.NodeType != ExpressionType.MemberAccess))
695695
{
696696
var leftExpCall = leftExp as MethodCallExpression;
697697
if (leftExpCall == null || !(leftExpCall.Method.DeclaringType == typeof(SqlExt) && leftExpCall.Method.Name == nameof(SqlExt.IsNull)))

0 commit comments

Comments
 (0)