就像实体框架6中的查询一样

时间:2017-02-15 09:05:01

标签: postgresql linq entity-framework-6

我有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中,可以使用%符号

完成

2 个答案:

答案 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