gpt4 book ai didi

entity-framework - 我可以使Entity Framework使用sqlite的LIKE代替instr()吗?

转载 作者:行者123 更新时间:2023-12-03 18:25:46 24 4
gpt4 key购买 nike

当前使用.NET Core 2。

我使用类似于以下内容的LINQ查询:

var peopleInRoseStreet = context.Person
.Include(p => p.Addresses)
.Where(p => p.Addresses.Any(a => a.Text.Contains("rose")));


EF似乎将其翻译为:

SELECT "p".*
FROM "Person" AS "p"
WHERE EXISTS (
SELECT 1
FROM "PersonAddress" AS "a"
WHERE (instr("a"."Text", 'rose') > 0) AND ("p"."Id" = "a"."person_id"))
ORDER BY "p"."Id"


通过使用 instr(),尽管PersonAddress.Text列设置为 COLLATE NOCASE,但比较区分大小写。如果我修改上面的查询以改为使用 LIKE,则搜索将按我的意图区分大小写。

是否可以强制EF使用 LIKE

最佳答案

您可以使用EF Core 2.0中引入的EF.Functions.Like

var peopleInRoseStreet = context.Person
.Include(p => p.Addresses)
.Where(p => p.Addresses.Any(a => EF.Functions.Like(a.Text, "%rose%")));

关于entity-framework - 我可以使Entity Framework使用sqlite的LIKE代替instr()吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46897812/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com