gpt4 book ai didi

c# - Linq 实体 (EF 4.1) : How to do a SQL LIKE with a wildcard in the middle ( '%term%term%' )?

转载 作者:IT王子 更新时间:2023-10-29 04:46:09 30 4
gpt4 key购买 nike

我要搜索这个:

Post Cereal

得到这个:

Post Honey Nut Cereal

通配符是空格。

我知道我可以执行 SPLIT 和一系列 AND 和 Contains() 并将每个术语作为规范对象转换为 Linq 表达式,但是没有办法在发送到 SQL 的术语中使用通配符吗?我查看了 Linq to SQL 中的 SQL 函数,但我不确定它在 Linq to Entities 中是什么。

我想做这样的事情:

term = '%' + term.Replace(' ', '%') + '%';
db.table.where( p => System.Data.Objects.SqlClient.SqlFunctions
.SqlMethods.Like(p.fieldname, term) );

有什么建议吗?

最佳答案

我相信你可以使用 SqlFunctions.PatIndex :

dt.Table.Where(p => SqlFunctions.PatIndex(term, p.fieldname) > 0);

SqlFunctions.PatIndex 的行为与 SQL LIKE 相同运算符(operator)。它支持所有标准通配符,包括:

  • % 零个或多个字符的任何字符串。
  • _(下划线)任何单个字符。
  • [ ] 指定范围 ([a-f]) 或集合 ([abcdef]) 内的任何单个字符。
  • [^] 不在指定范围 ([^a-f]) 或集合 ([^abcdef]) 内的任何单个字符。

SqlFunctions.PatIndex 通常在 SqlMethods.Like 不可用时可用(包括在 MVC Controller 中)

关于c# - Linq 实体 (EF 4.1) : How to do a SQL LIKE with a wildcard in the middle ( '%term%term%' )?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7689284/

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