Postgres EFCore 生成使用 ILIKE ANY 的不区分大小写的查询

问题描述 投票:0回答:1

因此,我在项目中使用 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 来做吗?

postgresql npgsql
1个回答
0
投票

如您所见,它将 Array.Contains 转换为 ANY 子句,该子句区分大小写。

ANY 不区分大小写或不敏感;区分大小写由此处比较的列决定 (

symbol
)。仔细阅读有关排序规则和区分大小写的 EF 文档,并考虑将符号切换为不区分大小写的排序规则。

© www.soinside.com 2019 - 2024. All rights reserved.