diff --git a/FreeSql.Tests/FreeSql.Tests/PostgreSQL/PostgreSQLCodeFirstTest.cs b/FreeSql.Tests/FreeSql.Tests/PostgreSQL/PostgreSQLCodeFirstTest.cs
index 5db7074a..75cd98d8 100644
--- a/FreeSql.Tests/FreeSql.Tests/PostgreSQL/PostgreSQLCodeFirstTest.cs
+++ b/FreeSql.Tests/FreeSql.Tests/PostgreSQL/PostgreSQLCodeFirstTest.cs
@@ -369,7 +369,7 @@ namespace FreeSql.Tests.PostgreSQL
var item3NP = insert.AppendData(item2).NoneParameter().ExecuteInserted();
var item3 = insert.AppendData(item2).ExecuteInserted().First();
- var newitem2 = select.Where(a => a.Id == item3.Id).ToOne();
+ var newitem2 = select.Where(a => a.Id == item3.Id && object.Equals(a.testFieldJToken["a"], "1")).ToOne();
var items = select.ToList();
}
diff --git a/FreeSql.Tests/FreeSql.Tests/SqlServer/Curd/SqlServerSelectTest.cs b/FreeSql.Tests/FreeSql.Tests/SqlServer/Curd/SqlServerSelectTest.cs
index 8ebffb14..e55dc1a2 100644
--- a/FreeSql.Tests/FreeSql.Tests/SqlServer/Curd/SqlServerSelectTest.cs
+++ b/FreeSql.Tests/FreeSql.Tests/SqlServer/Curd/SqlServerSelectTest.cs
@@ -963,6 +963,15 @@ WHERE (((cast(a.[Id] as nvarchar)) in (SELECT b.[Title]
a.Id,
a.Clicks
});
+
+ var testUnionAll = select
+ .WithSql("SELECT * FROM [tb_topic22] where id = 10")
+ .WithSql("SELECT * FROM [tb_topic22] where id = 11")
+ .ToSql(a => new
+ {
+ a.Id,
+ a.Clicks
+ });
}
public class TestInclude_OneToManyModel1
diff --git a/FreeSql/FreeSql.xml b/FreeSql/FreeSql.xml
index 60d38476..4958b871 100644
--- a/FreeSql/FreeSql.xml
+++ b/FreeSql/FreeSql.xml
@@ -2961,6 +2961,40 @@
+
+
+ C#:从元组集合中查找 exp1, exp2 是否存在
+ SQL:
+ exp1 = that[0].Item1 and exp2 = that[0].Item2 OR
+ exp1 = that[1].Item1 and exp2 = that[1].Item2 OR
+ ...
+ 注意:当 that 为 null 或 empty 时,返回 1=0
+
+
+
+
+
+
+
+
+
+
+ C#:从元组集合中查找 exp1, exp2, exp2 是否存在
+ SQL:
+ exp1 = that[0].Item1 and exp2 = that[0].Item2 and exp3 = that[0].Item3 OR
+ exp1 = that[1].Item1 and exp2 = that[1].Item2 and exp3 = that[1].Item3 OR
+ ...
+ 注意:当 that 为 null 或 empty 时,返回 1=0
+
+
+
+
+
+
+
+
+
+
测量两个经纬度的距离,返回单位:米
@@ -3234,49 +3268,3 @@
-完成(可能)被其他线程事务自动提交
-
- 事务体 () => {}
-
-
-
- 开启事务(不支持异步)
-
- 超时,未执行完成(可能)被其他线程事务自动提交
- 事务体 () => {}
-
-
-
- 开启事务(不支持异步)
-
-
- 事务体 () => {}
- 超时,未执行完成(可能)被其他线程事务自动提交
-
-
-
- 数据库访问对象
-
-
-
-
- 所有拦截方法都在这里
-
-
-
-
- CodeFirst 模式开发相关方法
-
-
-
-
- DbFirst 模式开发相关方法
-
-
-
-
- 全局过滤设置,可默认附加为 Select/Update/Delete 条件
-
-
-
-
diff --git a/FreeSql/Internal/CommonExpression.cs b/FreeSql/Internal/CommonExpression.cs
index 64bed1e7..d7f48fdf 100644
--- a/FreeSql/Internal/CommonExpression.cs
+++ b/FreeSql/Internal/CommonExpression.cs
@@ -675,8 +675,11 @@ namespace FreeSql.Internal
case "System.Convert": other3Exp = ExpressionLambdaToSqlCallConvert(exp3, tsc); break;
}
if (string.IsNullOrEmpty(other3Exp) == false) return other3Exp;
- if (exp3.Method.Name == "Equals" && exp3.Object != null && exp3.Arguments.Count > 0)
- return ExpressionBinary("=", exp3.Object, exp3.Arguments[0], tsc);
+ if (exp3.Method.Name == "Equals")
+ {
+ if (exp3.Arguments.Count > 0 && exp3.Object != null) return ExpressionBinary("=", exp3.Object, exp3.Arguments[0], tsc);
+ if (exp3.Arguments.Count > 1 && exp3.Method.DeclaringType == typeof(object)) return ExpressionBinary("=", exp3.Arguments[0], exp3.Arguments[1], tsc);
+ }
if (callType.FullName.StartsWith("FreeSql.ISelectGroupingAggregate`"))
{
//if (exp3.Type == typeof(string) && exp3.Arguments.Any() && exp3.Arguments[0].NodeType == ExpressionType.Constant) {
diff --git a/Providers/FreeSql.Provider.PostgreSQL/PostgreSQLExpression.cs b/Providers/FreeSql.Provider.PostgreSQL/PostgreSQLExpression.cs
index 797955ca..bcea0fdc 100644
--- a/Providers/FreeSql.Provider.PostgreSQL/PostgreSQLExpression.cs
+++ b/Providers/FreeSql.Provider.PostgreSQL/PostgreSQLExpression.cs
@@ -115,6 +115,7 @@ namespace FreeSql.PostgreSQL
left = objExp == null ? null : getExp(objExp);
switch (callExp.Method.Name)
{
+ case "get_Item": return $"{left}->{getExp(callExp.Arguments[argIndex])}";
case "Any": return $"(jsonb_array_length(coalesce({left},'[]')) > 0)";
case "Contains":
var json = getExp(callExp.Arguments[argIndex]);