我有PostgreSQL的Entity Framework 现在我做这样的事情:
string query = "select * from dbo.Products where name ilike '%test%phrase%'
or code ilike '%test%phrase%' or code2 ilike '%test%phrase%'";
var result = context.Products.SqlQuery(query);
所以我得到的产品名称如下:
测试一些短语
一些测试用语
等等。
如何在没有原始sql的情况下使用linq或其他类型的查询执行相同的查询?
我需要从字符串+部分的开头到中间的部分短语,可能部分从结尾。像正则表达式的东西。在postgres中,可以使用%符号
完成答案 0 :(得分:1)
我原来的回答是错的(我向OP道歉。)
您可以使用Name.StartsWith,Name.EndsWith或Name.Contains。
最重要的是,您可以使用Devart.Data.PostgreSql.Entity.PgSqlFunctions来实现LIKE比较。即。
where PgSqlFunctions.Like(PgSqlFunctions.Lower(c.Name), PgSqlFunctions.Lower(pattern))
此致
AB
PS:如果你有很多需要搜索的数据,请查看三元组索引 - https://www.postgresql.org/docs/9.6/static/pgtrgm.html
答案 1 :(得分:0)
你可以试试这个。
beforeTextChanged, onTextChanged, afterTextChanged