mirror of
				https://github.com/nsnail/FreeSql.git
				synced 2025-11-04 01:05:27 +08:00 
			
		
		
		
	- 修复 Where(a => bool && id > 0) bool 未解析正确的 bug;
> (之前大多数类似的表达都能解析,这次是一个特殊情况)
This commit is contained in:
		@@ -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>
 | 
				
			||||||
            添加
 | 
					            添加
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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]
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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]
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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]
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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]
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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]
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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]
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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]
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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]
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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]
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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]
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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;
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user