- 修复 Where(a => bool && id > 0) bool 未解析正确的 bug;

> (之前大多数类似的表达都能解析,这次是一个特殊情况)
This commit is contained in:
28810 2019-11-17 21:01:49 +08:00
parent 1cb8bb92f0
commit 769c1f020c
12 changed files with 256 additions and 21 deletions

View File

@ -106,13 +106,6 @@
清空状态数据 清空状态数据
</summary> </summary>
</member> </member>
<member name="M:FreeSql.DbSet`1.RemoveAsync(System.Linq.Expressions.Expression{System.Func{`0,System.Boolean}})">
<summary>
根据 lambda 条件删除数据
</summary>
<param name="predicate"></param>
<returns></returns>
</member>
<member name="M:FreeSql.DbSet`1.Add(`0)"> <member name="M:FreeSql.DbSet`1.Add(`0)">
<summary> <summary>
添加 添加

View File

@ -47,6 +47,30 @@ namespace FreeSql.Tests.MySqlConnectorExpression
var t33 = select.Where(a => a.testFieldBoolNullable == false).ToList(); var t33 = select.Where(a => a.testFieldBoolNullable == false).ToList();
var t44 = select.Where(a => !a.testFieldBoolNullable.Value).ToList(); var t44 = select.Where(a => !a.testFieldBoolNullable.Value).ToList();
var t55 = select.Where(a => a.testFieldBoolNullable.Value).ToList(); var t55 = select.Where(a => a.testFieldBoolNullable.Value).ToList();
var t111 = select.Where(a => a.testFieldBool == true && a.Id > 0).ToList();
var t222 = select.Where(a => a.testFieldBool != true && a.Id > 0).ToList();
var t333 = select.Where(a => a.testFieldBool == false && a.Id > 0).ToList();
var t444 = select.Where(a => !a.testFieldBool && a.Id > 0).ToList();
var t555 = select.Where(a => a.testFieldBool && a.Id > 0).ToList();
var t1111 = select.Where(a => a.testFieldBoolNullable == true && a.Id > 0).ToList();
var t2222 = select.Where(a => a.testFieldBoolNullable != true && a.Id > 0).ToList();
var t3333 = select.Where(a => a.testFieldBoolNullable == false && a.Id > 0).ToList();
var t4444 = select.Where(a => !a.testFieldBoolNullable.Value && a.Id > 0).ToList();
var t5555 = select.Where(a => a.testFieldBoolNullable.Value && a.Id > 0).ToList();
var t11111 = select.Where(a => a.testFieldBool == true && a.Id > 0 && a.testFieldBool == true).ToList();
var t22222 = select.Where(a => a.testFieldBool != true && a.Id > 0 && a.testFieldBool != true).ToList();
var t33333 = select.Where(a => a.testFieldBool == false && a.Id > 0 && a.testFieldBool == false).ToList();
var t44444 = select.Where(a => !a.testFieldBool && a.Id > 0 && !a.testFieldBool).ToList();
var t55555 = select.Where(a => a.testFieldBool && a.Id > 0 && a.testFieldBool).ToList();
var t111111 = select.Where(a => a.testFieldBoolNullable == true && a.Id > 0 && a.testFieldBoolNullable == true).ToList();
var t222222 = select.Where(a => a.testFieldBoolNullable != true && a.Id > 0 && a.testFieldBoolNullable != true).ToList();
var t333333 = select.Where(a => a.testFieldBoolNullable == false && a.Id > 0 && a.testFieldBoolNullable == false).ToList();
var t444444 = select.Where(a => !a.testFieldBoolNullable.Value && a.Id > 0 && !a.testFieldBoolNullable.Value).ToList();
var t555555 = select.Where(a => a.testFieldBoolNullable.Value && a.Id > 0 && a.testFieldBoolNullable.Value).ToList();
} }
[Fact] [Fact]

View File

@ -47,6 +47,30 @@ namespace FreeSql.Tests.Odbc.MySqlExpression
var t33 = select.Where(a => a.testFieldBoolNullable == false).ToList(); var t33 = select.Where(a => a.testFieldBoolNullable == false).ToList();
var t44 = select.Where(a => !a.testFieldBoolNullable.Value).ToList(); var t44 = select.Where(a => !a.testFieldBoolNullable.Value).ToList();
var t55 = select.Where(a => a.testFieldBoolNullable.Value).ToList(); var t55 = select.Where(a => a.testFieldBoolNullable.Value).ToList();
var t111 = select.Where(a => a.testFieldBool == true && a.Id > 0).ToList();
var t222 = select.Where(a => a.testFieldBool != true && a.Id > 0).ToList();
var t333 = select.Where(a => a.testFieldBool == false && a.Id > 0).ToList();
var t444 = select.Where(a => !a.testFieldBool && a.Id > 0).ToList();
var t555 = select.Where(a => a.testFieldBool && a.Id > 0).ToList();
var t1111 = select.Where(a => a.testFieldBoolNullable == true && a.Id > 0).ToList();
var t2222 = select.Where(a => a.testFieldBoolNullable != true && a.Id > 0).ToList();
var t3333 = select.Where(a => a.testFieldBoolNullable == false && a.Id > 0).ToList();
var t4444 = select.Where(a => !a.testFieldBoolNullable.Value && a.Id > 0).ToList();
var t5555 = select.Where(a => a.testFieldBoolNullable.Value && a.Id > 0).ToList();
var t11111 = select.Where(a => a.testFieldBool == true && a.Id > 0 && a.testFieldBool == true).ToList();
var t22222 = select.Where(a => a.testFieldBool != true && a.Id > 0 && a.testFieldBool != true).ToList();
var t33333 = select.Where(a => a.testFieldBool == false && a.Id > 0 && a.testFieldBool == false).ToList();
var t44444 = select.Where(a => !a.testFieldBool && a.Id > 0 && !a.testFieldBool).ToList();
var t55555 = select.Where(a => a.testFieldBool && a.Id > 0 && a.testFieldBool).ToList();
var t111111 = select.Where(a => a.testFieldBoolNullable == true && a.Id > 0 && a.testFieldBoolNullable == true).ToList();
var t222222 = select.Where(a => a.testFieldBoolNullable != true && a.Id > 0 && a.testFieldBoolNullable != true).ToList();
var t333333 = select.Where(a => a.testFieldBoolNullable == false && a.Id > 0 && a.testFieldBoolNullable == false).ToList();
var t444444 = select.Where(a => !a.testFieldBoolNullable.Value && a.Id > 0 && !a.testFieldBoolNullable.Value).ToList();
var t555555 = select.Where(a => a.testFieldBoolNullable.Value && a.Id > 0 && a.testFieldBoolNullable.Value).ToList();
} }
[Fact] [Fact]

View File

@ -45,6 +45,30 @@ namespace FreeSql.Tests.Odbc.OracleExpression
var t33 = select.Where(a => a.BoolNullable == false).ToList(); var t33 = select.Where(a => a.BoolNullable == false).ToList();
var t44 = select.Where(a => !a.BoolNullable.Value).ToList(); var t44 = select.Where(a => !a.BoolNullable.Value).ToList();
var t55 = select.Where(a => a.BoolNullable.Value).ToList(); var t55 = select.Where(a => a.BoolNullable.Value).ToList();
var t111 = select.Where(a => a.Bool == true && a.Id > 0).ToList();
var t222 = select.Where(a => a.Bool != true && a.Id > 0).ToList();
var t333 = select.Where(a => a.Bool == false && a.Id > 0).ToList();
var t444 = select.Where(a => !a.Bool && a.Id > 0).ToList();
var t555 = select.Where(a => a.Bool && a.Id > 0).ToList();
var t1111 = select.Where(a => a.BoolNullable == true && a.Id > 0).ToList();
var t2222 = select.Where(a => a.BoolNullable != true && a.Id > 0).ToList();
var t3333 = select.Where(a => a.BoolNullable == false && a.Id > 0).ToList();
var t4444 = select.Where(a => !a.BoolNullable.Value && a.Id > 0).ToList();
var t5555 = select.Where(a => a.BoolNullable.Value && a.Id > 0).ToList();
var t11111 = select.Where(a => a.Bool == true && a.Id > 0 && a.Bool == true).ToList();
var t22222 = select.Where(a => a.Bool != true && a.Id > 0 && a.Bool != true).ToList();
var t33333 = select.Where(a => a.Bool == false && a.Id > 0 && a.Bool == false).ToList();
var t44444 = select.Where(a => !a.Bool && a.Id > 0 && !a.Bool).ToList();
var t55555 = select.Where(a => a.Bool && a.Id > 0 && a.Bool).ToList();
var t111111 = select.Where(a => a.BoolNullable == true && a.Id > 0 && a.BoolNullable == true).ToList();
var t222222 = select.Where(a => a.BoolNullable != true && a.Id > 0 && a.BoolNullable != true).ToList();
var t333333 = select.Where(a => a.BoolNullable == false && a.Id > 0 && a.BoolNullable == false).ToList();
var t444444 = select.Where(a => !a.BoolNullable.Value && a.Id > 0 && !a.BoolNullable.Value).ToList();
var t555555 = select.Where(a => a.BoolNullable.Value && a.Id > 0 && a.BoolNullable.Value).ToList();
} }
[Fact] [Fact]

View File

@ -50,6 +50,30 @@ namespace FreeSql.Tests.Odbc.PostgreSQLExpression
var t33 = select.Where(a => a.testFieldBoolNullable == false).ToList(); var t33 = select.Where(a => a.testFieldBoolNullable == false).ToList();
var t44 = select.Where(a => !a.testFieldBoolNullable.Value).ToList(); var t44 = select.Where(a => !a.testFieldBoolNullable.Value).ToList();
var t55 = select.Where(a => a.testFieldBoolNullable.Value).ToList(); var t55 = select.Where(a => a.testFieldBoolNullable.Value).ToList();
var t111 = select.Where(a => a.testFieldBool == true && a.Id > 0).ToList();
var t222 = select.Where(a => a.testFieldBool != true && a.Id > 0).ToList();
var t333 = select.Where(a => a.testFieldBool == false && a.Id > 0).ToList();
var t444 = select.Where(a => !a.testFieldBool && a.Id > 0).ToList();
var t555 = select.Where(a => a.testFieldBool && a.Id > 0).ToList();
var t1111 = select.Where(a => a.testFieldBoolNullable == true && a.Id > 0).ToList();
var t2222 = select.Where(a => a.testFieldBoolNullable != true && a.Id > 0).ToList();
var t3333 = select.Where(a => a.testFieldBoolNullable == false && a.Id > 0).ToList();
var t4444 = select.Where(a => !a.testFieldBoolNullable.Value && a.Id > 0).ToList();
var t5555 = select.Where(a => a.testFieldBoolNullable.Value && a.Id > 0).ToList();
var t11111 = select.Where(a => a.testFieldBool == true && a.Id > 0 && a.testFieldBool == true).ToList();
var t22222 = select.Where(a => a.testFieldBool != true && a.Id > 0 && a.testFieldBool != true).ToList();
var t33333 = select.Where(a => a.testFieldBool == false && a.Id > 0 && a.testFieldBool == false).ToList();
var t44444 = select.Where(a => !a.testFieldBool && a.Id > 0 && !a.testFieldBool).ToList();
var t55555 = select.Where(a => a.testFieldBool && a.Id > 0 && a.testFieldBool).ToList();
var t111111 = select.Where(a => a.testFieldBoolNullable == true && a.Id > 0 && a.testFieldBoolNullable == true).ToList();
var t222222 = select.Where(a => a.testFieldBoolNullable != true && a.Id > 0 && a.testFieldBoolNullable != true).ToList();
var t333333 = select.Where(a => a.testFieldBoolNullable == false && a.Id > 0 && a.testFieldBoolNullable == false).ToList();
var t444444 = select.Where(a => !a.testFieldBoolNullable.Value && a.Id > 0 && !a.testFieldBoolNullable.Value).ToList();
var t555555 = select.Where(a => a.testFieldBoolNullable.Value && a.Id > 0 && a.testFieldBoolNullable.Value).ToList();
} }
[Fact] [Fact]

View File

@ -42,6 +42,30 @@ namespace FreeSql.Tests.Odbc.SqlServerExpression
var t33 = select.Where(a => a.testFieldBoolNullable == false).ToList(); var t33 = select.Where(a => a.testFieldBoolNullable == false).ToList();
var t44 = select.Where(a => !a.testFieldBoolNullable.Value).ToList(); var t44 = select.Where(a => !a.testFieldBoolNullable.Value).ToList();
var t55 = select.Where(a => a.testFieldBoolNullable.Value).ToList(); var t55 = select.Where(a => a.testFieldBoolNullable.Value).ToList();
var t111 = select.Where(a => a.testFieldBool == true && a.Id > 0).ToList();
var t222 = select.Where(a => a.testFieldBool != true && a.Id > 0).ToList();
var t333 = select.Where(a => a.testFieldBool == false && a.Id > 0).ToList();
var t444 = select.Where(a => !a.testFieldBool && a.Id > 0).ToList();
var t555 = select.Where(a => a.testFieldBool && a.Id > 0).ToList();
var t1111 = select.Where(a => a.testFieldBoolNullable == true && a.Id > 0).ToList();
var t2222 = select.Where(a => a.testFieldBoolNullable != true && a.Id > 0).ToList();
var t3333 = select.Where(a => a.testFieldBoolNullable == false && a.Id > 0).ToList();
var t4444 = select.Where(a => !a.testFieldBoolNullable.Value && a.Id > 0).ToList();
var t5555 = select.Where(a => a.testFieldBoolNullable.Value && a.Id > 0).ToList();
var t11111 = select.Where(a => a.testFieldBool == true && a.Id > 0 && a.testFieldBool == true).ToList();
var t22222 = select.Where(a => a.testFieldBool != true && a.Id > 0 && a.testFieldBool != true).ToList();
var t33333 = select.Where(a => a.testFieldBool == false && a.Id > 0 && a.testFieldBool == false).ToList();
var t44444 = select.Where(a => !a.testFieldBool && a.Id > 0 && !a.testFieldBool).ToList();
var t55555 = select.Where(a => a.testFieldBool && a.Id > 0 && a.testFieldBool).ToList();
var t111111 = select.Where(a => a.testFieldBoolNullable == true && a.Id > 0 && a.testFieldBoolNullable == true).ToList();
var t222222 = select.Where(a => a.testFieldBoolNullable != true && a.Id > 0 && a.testFieldBoolNullable != true).ToList();
var t333333 = select.Where(a => a.testFieldBoolNullable == false && a.Id > 0 && a.testFieldBoolNullable == false).ToList();
var t444444 = select.Where(a => !a.testFieldBoolNullable.Value && a.Id > 0 && !a.testFieldBoolNullable.Value).ToList();
var t555555 = select.Where(a => a.testFieldBoolNullable.Value && a.Id > 0 && a.testFieldBoolNullable.Value).ToList();
} }
[Fact] [Fact]

View File

@ -47,6 +47,30 @@ namespace FreeSql.Tests.MySqlExpression
var t33 = select.Where(a => a.testFieldBoolNullable == false).ToList(); var t33 = select.Where(a => a.testFieldBoolNullable == false).ToList();
var t44 = select.Where(a => !a.testFieldBoolNullable.Value).ToList(); var t44 = select.Where(a => !a.testFieldBoolNullable.Value).ToList();
var t55 = select.Where(a => a.testFieldBoolNullable.Value).ToList(); var t55 = select.Where(a => a.testFieldBoolNullable.Value).ToList();
var t111 = select.Where(a => a.testFieldBool == true && a.Id > 0).ToList();
var t222 = select.Where(a => a.testFieldBool != true && a.Id > 0).ToList();
var t333 = select.Where(a => a.testFieldBool == false && a.Id > 0).ToList();
var t444 = select.Where(a => !a.testFieldBool && a.Id > 0).ToList();
var t555 = select.Where(a => a.testFieldBool && a.Id > 0).ToList();
var t1111 = select.Where(a => a.testFieldBoolNullable == true && a.Id > 0).ToList();
var t2222 = select.Where(a => a.testFieldBoolNullable != true && a.Id > 0).ToList();
var t3333 = select.Where(a => a.testFieldBoolNullable == false && a.Id > 0).ToList();
var t4444 = select.Where(a => !a.testFieldBoolNullable.Value && a.Id > 0).ToList();
var t5555 = select.Where(a => a.testFieldBoolNullable.Value && a.Id > 0).ToList();
var t11111 = select.Where(a => a.testFieldBool == true && a.Id > 0 && a.testFieldBool == true).ToList();
var t22222 = select.Where(a => a.testFieldBool != true && a.Id > 0 && a.testFieldBool != true).ToList();
var t33333 = select.Where(a => a.testFieldBool == false && a.Id > 0 && a.testFieldBool == false).ToList();
var t44444 = select.Where(a => !a.testFieldBool && a.Id > 0 && !a.testFieldBool).ToList();
var t55555 = select.Where(a => a.testFieldBool && a.Id > 0 && a.testFieldBool).ToList();
var t111111 = select.Where(a => a.testFieldBoolNullable == true && a.Id > 0 && a.testFieldBoolNullable == true).ToList();
var t222222 = select.Where(a => a.testFieldBoolNullable != true && a.Id > 0 && a.testFieldBoolNullable != true).ToList();
var t333333 = select.Where(a => a.testFieldBoolNullable == false && a.Id > 0 && a.testFieldBoolNullable == false).ToList();
var t444444 = select.Where(a => !a.testFieldBoolNullable.Value && a.Id > 0 && !a.testFieldBoolNullable.Value).ToList();
var t555555 = select.Where(a => a.testFieldBoolNullable.Value && a.Id > 0 && a.testFieldBoolNullable.Value).ToList();
} }
[Fact] [Fact]

View File

@ -45,6 +45,30 @@ namespace FreeSql.Tests.OracleExpression
var t33 = select.Where(a => a.BoolNullable == false).ToList(); var t33 = select.Where(a => a.BoolNullable == false).ToList();
var t44 = select.Where(a => !a.BoolNullable.Value).ToList(); var t44 = select.Where(a => !a.BoolNullable.Value).ToList();
var t55 = select.Where(a => a.BoolNullable.Value).ToList(); var t55 = select.Where(a => a.BoolNullable.Value).ToList();
var t111 = select.Where(a => a.Bool == true && a.Id > 0).ToList();
var t222 = select.Where(a => a.Bool != true && a.Id > 0).ToList();
var t333 = select.Where(a => a.Bool == false && a.Id > 0).ToList();
var t444 = select.Where(a => !a.Bool && a.Id > 0).ToList();
var t555 = select.Where(a => a.Bool && a.Id > 0).ToList();
var t1111 = select.Where(a => a.BoolNullable == true && a.Id > 0).ToList();
var t2222 = select.Where(a => a.BoolNullable != true && a.Id > 0).ToList();
var t3333 = select.Where(a => a.BoolNullable == false && a.Id > 0).ToList();
var t4444 = select.Where(a => !a.BoolNullable.Value && a.Id > 0).ToList();
var t5555 = select.Where(a => a.BoolNullable.Value && a.Id > 0).ToList();
var t11111 = select.Where(a => a.Bool == true && a.Id > 0 && a.Bool == true).ToList();
var t22222 = select.Where(a => a.Bool != true && a.Id > 0 && a.Bool != true).ToList();
var t33333 = select.Where(a => a.Bool == false && a.Id > 0 && a.Bool == false).ToList();
var t44444 = select.Where(a => !a.Bool && a.Id > 0 && !a.Bool).ToList();
var t55555 = select.Where(a => a.Bool && a.Id > 0 && a.Bool).ToList();
var t111111 = select.Where(a => a.BoolNullable == true && a.Id > 0 && a.BoolNullable == true).ToList();
var t222222 = select.Where(a => a.BoolNullable != true && a.Id > 0 && a.BoolNullable != true).ToList();
var t333333 = select.Where(a => a.BoolNullable == false && a.Id > 0 && a.BoolNullable == false).ToList();
var t444444 = select.Where(a => !a.BoolNullable.Value && a.Id > 0 && !a.BoolNullable.Value).ToList();
var t555555 = select.Where(a => a.BoolNullable.Value && a.Id > 0 && a.BoolNullable.Value).ToList();
} }
[Fact] [Fact]

View File

@ -43,17 +43,41 @@ namespace FreeSql.Tests.PostgreSQLExpression
[Fact] [Fact]
public void Boolean() public void Boolean()
{ {
var t1 = select.Where(a => a.testFieldBool == true).ToList(); var t1 = select.Where(a => a.testFieldBool == true).Limit(10).ToList();
var t2 = select.Where(a => a.testFieldBool != true).ToList(); var t2 = select.Where(a => a.testFieldBool != true).Limit(10).ToList();
var t3 = select.Where(a => a.testFieldBool == false).ToList(); var t3 = select.Where(a => a.testFieldBool == false).Limit(10).ToList();
var t4 = select.Where(a => !a.testFieldBool).ToList(); var t4 = select.Where(a => !a.testFieldBool).Limit(10).ToList();
var t5 = select.Where(a => a.testFieldBool).ToList(); var t5 = select.Where(a => a.testFieldBool).Limit(10).ToList();
var t11 = select.Where(a => a.testFieldBoolNullable == true).ToList(); var t11 = select.Where(a => a.testFieldBoolNullable == true).Limit(10).ToList();
var t22 = select.Where(a => a.testFieldBoolNullable != true).ToList(); var t22 = select.Where(a => a.testFieldBoolNullable != true).Limit(10).ToList();
var t33 = select.Where(a => a.testFieldBoolNullable == false).ToList(); var t33 = select.Where(a => a.testFieldBoolNullable == false).Limit(10).ToList();
var t44 = select.Where(a => !a.testFieldBoolNullable.Value).ToList(); var t44 = select.Where(a => !a.testFieldBoolNullable.Value).Limit(10).ToList();
var t55 = select.Where(a => a.testFieldBoolNullable.Value).ToList(); var t55 = select.Where(a => a.testFieldBoolNullable.Value).Limit(10).ToList();
var t111 = select.Where(a => a.testFieldBool == true && a.Id > 0).Limit(10).ToList();
var t222 = select.Where(a => a.testFieldBool != true && a.Id > 0).Limit(10).ToList();
var t333 = select.Where(a => a.testFieldBool == false && a.Id > 0).Limit(10).ToList();
var t444 = select.Where(a => !a.testFieldBool && a.Id > 0).Limit(10).ToList();
var t555 = select.Where(a => a.testFieldBool && a.Id > 0).Limit(10).ToList();
var t1111 = select.Where(a => a.testFieldBoolNullable == true && a.Id > 0).Limit(10).ToList();
var t2222 = select.Where(a => a.testFieldBoolNullable != true && a.Id > 0).Limit(10).ToList();
var t3333 = select.Where(a => a.testFieldBoolNullable == false && a.Id > 0).Limit(10).ToList();
var t4444 = select.Where(a => !a.testFieldBoolNullable.Value && a.Id > 0).Limit(10).ToList();
var t5555 = select.Where(a => a.testFieldBoolNullable.Value && a.Id > 0).Limit(10).ToList();
var t11111 = select.Where(a => a.testFieldBool == true && a.Id > 0 && a.testFieldBool == true).Limit(10).ToList();
var t22222 = select.Where(a => a.testFieldBool != true && a.Id > 0 && a.testFieldBool != true).Limit(10).ToList();
var t33333 = select.Where(a => a.testFieldBool == false && a.Id > 0 && a.testFieldBool == false).Limit(10).ToList();
var t44444 = select.Where(a => !a.testFieldBool && a.Id > 0 && !a.testFieldBool).Limit(10).ToList();
var t55555 = select.Where(a => a.testFieldBool && a.Id > 0 && a.testFieldBool).Limit(10).ToList();
var t111111 = select.Where(a => a.testFieldBoolNullable == true && a.Id > 0 && a.testFieldBoolNullable == true).Limit(10).ToList();
var t222222 = select.Where(a => a.testFieldBoolNullable != true && a.Id > 0 && a.testFieldBoolNullable != true).Limit(10).ToList();
var t333333 = select.Where(a => a.testFieldBoolNullable == false && a.Id > 0 && a.testFieldBoolNullable == false).Limit(10).ToList();
var t444444 = select.Where(a => !a.testFieldBoolNullable.Value && a.Id > 0 && !a.testFieldBoolNullable.Value).Limit(10).ToList();
var t555555 = select.Where(a => a.testFieldBoolNullable.Value && a.Id > 0 && a.testFieldBoolNullable.Value).Limit(10).ToList();
} }
[Fact] [Fact]

View File

@ -50,6 +50,30 @@ namespace FreeSql.Tests.SqlServerExpression
var t33 = select.Where(a => a.testFieldBoolNullable == false).ToList(); var t33 = select.Where(a => a.testFieldBoolNullable == false).ToList();
var t44 = select.Where(a => !a.testFieldBoolNullable.Value).ToList(); var t44 = select.Where(a => !a.testFieldBoolNullable.Value).ToList();
var t55 = select.Where(a => a.testFieldBoolNullable.Value).ToList(); var t55 = select.Where(a => a.testFieldBoolNullable.Value).ToList();
var t111 = select.Where(a => a.testFieldBool == true && a.Id > 0).ToList();
var t222 = select.Where(a => a.testFieldBool != true && a.Id > 0).ToList();
var t333 = select.Where(a => a.testFieldBool == false && a.Id > 0).ToList();
var t444 = select.Where(a => !a.testFieldBool && a.Id > 0).ToList();
var t555 = select.Where(a => a.testFieldBool && a.Id > 0).ToList();
var t1111 = select.Where(a => a.testFieldBoolNullable == true && a.Id > 0).ToList();
var t2222 = select.Where(a => a.testFieldBoolNullable != true && a.Id > 0).ToList();
var t3333 = select.Where(a => a.testFieldBoolNullable == false && a.Id > 0).ToList();
var t4444 = select.Where(a => !a.testFieldBoolNullable.Value && a.Id > 0).ToList();
var t5555 = select.Where(a => a.testFieldBoolNullable.Value && a.Id > 0).ToList();
var t11111 = select.Where(a => a.testFieldBool == true && a.Id > 0 && a.testFieldBool == true).ToList();
var t22222 = select.Where(a => a.testFieldBool != true && a.Id > 0 && a.testFieldBool != true).ToList();
var t33333 = select.Where(a => a.testFieldBool == false && a.Id > 0 && a.testFieldBool == false).ToList();
var t44444 = select.Where(a => !a.testFieldBool && a.Id > 0 && !a.testFieldBool).ToList();
var t55555 = select.Where(a => a.testFieldBool && a.Id > 0 && a.testFieldBool).ToList();
var t111111 = select.Where(a => a.testFieldBoolNullable == true && a.Id > 0 && a.testFieldBoolNullable == true).ToList();
var t222222 = select.Where(a => a.testFieldBoolNullable != true && a.Id > 0 && a.testFieldBoolNullable != true).ToList();
var t333333 = select.Where(a => a.testFieldBoolNullable == false && a.Id > 0 && a.testFieldBoolNullable == false).ToList();
var t444444 = select.Where(a => !a.testFieldBoolNullable.Value && a.Id > 0 && !a.testFieldBoolNullable.Value).ToList();
var t555555 = select.Where(a => a.testFieldBoolNullable.Value && a.Id > 0 && a.testFieldBoolNullable.Value).ToList();
} }
[Fact] [Fact]

View File

@ -45,6 +45,30 @@ namespace FreeSql.Tests.SqliteExpression
var t33 = select.Where(a => a.BoolNullable == false).ToList(); var t33 = select.Where(a => a.BoolNullable == false).ToList();
var t44 = select.Where(a => !a.BoolNullable.Value).ToList(); var t44 = select.Where(a => !a.BoolNullable.Value).ToList();
var t55 = select.Where(a => a.BoolNullable.Value).ToList(); var t55 = select.Where(a => a.BoolNullable.Value).ToList();
var t111 = select.Where(a => a.Bool == true && a.Id > 0).ToList();
var t222 = select.Where(a => a.Bool != true && a.Id > 0).ToList();
var t333 = select.Where(a => a.Bool == false && a.Id > 0).ToList();
var t444 = select.Where(a => !a.Bool && a.Id > 0).ToList();
var t555 = select.Where(a => a.Bool && a.Id > 0).ToList();
var t1111 = select.Where(a => a.BoolNullable == true && a.Id > 0).ToList();
var t2222 = select.Where(a => a.BoolNullable != true && a.Id > 0).ToList();
var t3333 = select.Where(a => a.BoolNullable == false && a.Id > 0).ToList();
var t4444 = select.Where(a => !a.BoolNullable.Value && a.Id > 0).ToList();
var t5555 = select.Where(a => a.BoolNullable.Value && a.Id > 0).ToList();
var t11111 = select.Where(a => a.Bool == true && a.Id > 0 && a.Bool == true).ToList();
var t22222 = select.Where(a => a.Bool != true && a.Id > 0 && a.Bool != true).ToList();
var t33333 = select.Where(a => a.Bool == false && a.Id > 0 && a.Bool == false).ToList();
var t44444 = select.Where(a => !a.Bool && a.Id > 0 && !a.Bool).ToList();
var t55555 = select.Where(a => a.Bool && a.Id > 0 && a.Bool).ToList();
var t111111 = select.Where(a => a.BoolNullable == true && a.Id > 0 && a.BoolNullable == true).ToList();
var t222222 = select.Where(a => a.BoolNullable != true && a.Id > 0 && a.BoolNullable != true).ToList();
var t333333 = select.Where(a => a.BoolNullable == false && a.Id > 0 && a.BoolNullable == false).ToList();
var t444444 = select.Where(a => !a.BoolNullable.Value && a.Id > 0 && !a.BoolNullable.Value).ToList();
var t555555 = select.Where(a => a.BoolNullable.Value && a.Id > 0 && a.BoolNullable.Value).ToList();
} }
[Fact] [Fact]

View File

@ -420,7 +420,7 @@ namespace FreeSql.Internal
var left = ExpressionLambdaToSql(leftExp, tsc); var left = ExpressionLambdaToSql(leftExp, tsc);
var leftMapColumn = SearchColumnByField(tsc._tables, tsc.currentTable, left); var leftMapColumn = SearchColumnByField(tsc._tables, tsc.currentTable, left);
var isLeftMapType = leftMapColumn != null && (leftMapColumn.Attribute.MapType != rightExp.Type || leftMapColumn.CsType != rightExp.Type); var isLeftMapType = leftMapColumn != null && new[] { "AND", "OR" }.Contains(oper) == false && (leftMapColumn.Attribute.MapType != rightExp.Type || leftMapColumn.CsType != rightExp.Type);
ColumnInfo rightMapColumn = null; ColumnInfo rightMapColumn = null;
var isRightMapType = false; var isRightMapType = false;
if (isLeftMapType) tsc.mapType = leftMapColumn.Attribute.MapType; if (isLeftMapType) tsc.mapType = leftMapColumn.Attribute.MapType;
@ -435,7 +435,7 @@ namespace FreeSql.Internal
if (leftMapColumn == null) if (leftMapColumn == null)
{ {
rightMapColumn = SearchColumnByField(tsc._tables, tsc.currentTable, right); rightMapColumn = SearchColumnByField(tsc._tables, tsc.currentTable, right);
isRightMapType = rightMapColumn != null && (rightMapColumn.Attribute.MapType != leftExp.Type || rightMapColumn.CsType != leftExp.Type); isRightMapType = rightMapColumn != null && new[] { "AND", "OR" }.Contains(oper) == false && (rightMapColumn.Attribute.MapType != leftExp.Type || rightMapColumn.CsType != leftExp.Type);
if (isRightMapType) if (isRightMapType)
{ {
tsc.mapType = rightMapColumn.Attribute.MapType; tsc.mapType = rightMapColumn.Attribute.MapType;
@ -485,8 +485,10 @@ namespace FreeSql.Internal
break; break;
case "AND": case "AND":
case "OR": case "OR":
left = GetBoolString(left); if (leftMapColumn != null) left = $"{left} = {formatSql(true, null)}";
right = GetBoolString(right); else left = GetBoolString(left);
if (rightMapColumn != null) right = $"{right} = {formatSql(true, null)}";
else right = GetBoolString(right);
break; break;
} }
tsc.mapType = null; tsc.mapType = null;