diff --git a/FreeSql.Tests/FreeSql.Tests/PostgreSQL/PostgreSQLExpression/OtherTest.cs b/FreeSql.Tests/FreeSql.Tests/PostgreSQL/PostgreSQLExpression/OtherTest.cs index a70426b1..18dc637d 100644 --- a/FreeSql.Tests/FreeSql.Tests/PostgreSQL/PostgreSQLExpression/OtherTest.cs +++ b/FreeSql.Tests/FreeSql.Tests/PostgreSQL/PostgreSQLExpression/OtherTest.cs @@ -175,9 +175,10 @@ namespace FreeSql.Tests.PostgreSQLExpression [Fact] public void HStore() { - var sql1 = select.Where(a => a.testFieldHStore.ContainsKey("a")).ToList(); var sql2 = select.Where(a => a.testFieldHStore.ContainsKey("a") == false).ToList(); + + var sql3 = select.Where(a => a.testFieldHStore["a"] == "xxx").ToList(); } [Table(Name = "tb_alltype")] diff --git a/Providers/FreeSql.Provider.KingbaseES/KingbaseESExpression.cs b/Providers/FreeSql.Provider.KingbaseES/KingbaseESExpression.cs index 1c174d31..1514da29 100644 --- a/Providers/FreeSql.Provider.KingbaseES/KingbaseESExpression.cs +++ b/Providers/FreeSql.Provider.KingbaseES/KingbaseESExpression.cs @@ -118,11 +118,12 @@ namespace FreeSql.KingbaseES if (objType != null || objType.IsArrayOrList()) { string left = null; - if (objType.FullName == typeof(Dictionary).FullName) + if (objType == typeof(Dictionary)) { left = objExp == null ? null : getExp(objExp); switch (callExp.Method.Name) { + case "get_Item": return $"{left}->{getExp(callExp.Arguments[argIndex])}"; case "Contains": var right = getExp(callExp.Arguments[argIndex]); return $"({left} @> ({right}))"; diff --git a/Providers/FreeSql.Provider.Odbc/KingbaseES/OdbcKingbaseESExpression.cs b/Providers/FreeSql.Provider.Odbc/KingbaseES/OdbcKingbaseESExpression.cs index c9299d53..47adfaba 100644 --- a/Providers/FreeSql.Provider.Odbc/KingbaseES/OdbcKingbaseESExpression.cs +++ b/Providers/FreeSql.Provider.Odbc/KingbaseES/OdbcKingbaseESExpression.cs @@ -118,11 +118,12 @@ namespace FreeSql.Odbc.KingbaseES if (objType != null || objType.IsArrayOrList()) { string left = null; - if (objType.FullName == typeof(Dictionary).FullName) + if (objType == typeof(Dictionary)) { left = objExp == null ? null : getExp(objExp); switch (callExp.Method.Name) { + case "get_Item": return $"{left}->{getExp(callExp.Arguments[argIndex])}"; case "Contains": var right = getExp(callExp.Arguments[argIndex]); return $"({left} @> ({right}))"; diff --git a/Providers/FreeSql.Provider.Odbc/PostgreSQL/OdbcPostgreSQLExpression.cs b/Providers/FreeSql.Provider.Odbc/PostgreSQL/OdbcPostgreSQLExpression.cs index fb932479..be0a6e73 100644 --- a/Providers/FreeSql.Provider.Odbc/PostgreSQL/OdbcPostgreSQLExpression.cs +++ b/Providers/FreeSql.Provider.Odbc/PostgreSQL/OdbcPostgreSQLExpression.cs @@ -118,11 +118,12 @@ namespace FreeSql.Odbc.PostgreSQL if (objType != null || objType.IsArrayOrList()) { string left = null; - if (objType.FullName == typeof(Dictionary).FullName) + if (objType == typeof(Dictionary)) { left = objExp == null ? null : getExp(objExp); switch (callExp.Method.Name) { + case "get_Item": return $"{left}->{getExp(callExp.Arguments[argIndex])}"; case "Contains": var right = getExp(callExp.Arguments[argIndex]); return $"({left} @> ({right}))"; @@ -206,7 +207,7 @@ namespace FreeSql.Odbc.PostgreSQL } break; } - if (memParentExp.FullName == typeof(Dictionary).FullName) + if (memParentExp == typeof(Dictionary)) { var left = getExp(memExp.Expression); switch (memExp.Member.Name) diff --git a/Providers/FreeSql.Provider.PostgreSQL/PostgreSQLExpression.cs b/Providers/FreeSql.Provider.PostgreSQL/PostgreSQLExpression.cs index d2524cb4..d536881e 100644 --- a/Providers/FreeSql.Provider.PostgreSQL/PostgreSQLExpression.cs +++ b/Providers/FreeSql.Provider.PostgreSQL/PostgreSQLExpression.cs @@ -149,11 +149,12 @@ namespace FreeSql.PostgreSQL } break; } - if (objType.FullName == typeof(Dictionary).FullName) + if (objType == typeof(Dictionary)) { left = objExp == null ? null : getExp(objExp); switch (callExp.Method.Name) { + case "get_Item": return $"{left}->{getExp(callExp.Arguments[argIndex])}"; case "Contains": var right = getExp(callExp.Arguments[argIndex]); return $"({left} @> ({right}))"; @@ -237,7 +238,7 @@ namespace FreeSql.PostgreSQL } break; } - if (memParentExp.FullName == typeof(Dictionary).FullName) + if (memParentExp == typeof(Dictionary)) { var left = getExp(memExp.Expression); switch (memExp.Member.Name)