gpt4 book ai didi

sql - EF Core 整数字段有效地包含子字符串

转载 作者:行者123 更新时间:2023-12-02 14:47:55 26 4
gpt4 key购买 nike

在 SQL Server 数据库表中,我有一个整数 ID 列。这不是主键,更像是序列号。我无法更改表定义。

我要求用户能够搜索部分 ID。例如,“ID 包含‘801’”。

我可以直接执行下面的查询:

select * from items
where item_num like '%801%'

在 EF Core 中,我有以下内容:

Items.Where(x => x.ItemNumber.ToString().Contains(idPartString))

翻译成:

WHERE ((CHARINDEX(@__idPart_2, CONVERT(VARCHAR(11), [x].[item_num])) > 0) OR (@__idPart_2= N''))

是否有更好(性能更高)的方法来实现这一目标而不诉诸原始 SQL 查询?

最佳答案

我相信您可以使用 Items.Where(x => EF.Functions.Like(x.ItemNumber.ToString(), idPartString));

DbFunctions里面的方法很少应利用 SQL 运算符和函数的类。

关于如何根据您在 older question 中的问题进行翻译的更多信息(不是 EF Core,但似乎仍然有效)。

更新

SouthShoreAK评论中添加的有值(value)信息.

Also, using Functions.Like allows you to use wildcards in the middle of the string, which String.Contains does not.

感谢分享!

关于sql - EF Core 整数字段有效地包含子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57795962/

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