因此,我在项目中使用 EntityFramework Core 和 Npgsql 提供程序。
我有以下查询,它使用
Array.Contains
。
var symbols = new[] { "AAPL", "GOOG", "MSFT" };
var instruments = dbContext.Instruments.Where(t => symbols.Contains(t.Symbol)).ToList();
生成如下sql:
select [columns] from instruments where symbol = ANY(ARRAY["AAPL", "GOOG", "MSFT"])
如您所见,它将
Array.Contains
转换为 ANY
子句,该子句区分大小写。
相反,我希望使用
ILIKE ANY
生成不区分大小写的查询。类似于以下内容:
select [columns] from instruments where symbol ILIKE ANY(ARRAY["AAPL", "GOOG", "MSFT"])
这可以用 Npgsql 来做吗?
如您所见,它将 Array.Contains 转换为 ANY 子句,该子句区分大小写。
ANY 不区分大小写或不敏感;区分大小写由此处比较的列决定 (
symbol
)。仔细阅读有关排序规则和区分大小写的 EF 文档,并考虑将符号切换为不区分大小写的排序规则。