Postgresql 类似实体框架6中的查询

Postgresql 类似实体框架6中的查询,postgresql,linq,entity-framework-6,Postgresql,Linq,Entity Framework 6,我用PostgreSQL创建了实体框架 现在我做了这样的事情: 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); 所以我得到的产品名称如下:

我用PostgreSQL创建了实体框架 现在我做了这样的事情:

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);
所以我得到的产品名称如下:

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中,可以使用%symbol完成此操作。您可以尝试此操作

var result = context.Products.Where(h=>h.Name.Contains("TestPhrase") ||
                                    h.Code.Contains("TestPhrase"))
                             .ToList();

我最初的回答是错误的(我向OP道歉)

您可以执行Name.StartsWith、Name.EndsWith或Name.Contains

除此之外,您还可以使用Devart.Data.PostgreSql.Entity.PgSqlFunctions实现类似的比较。i、 e

where PgSqlFunctions.Like(PgSqlFunctions.Lower(c.Name), PgSqlFunctions.Lower(pattern))
问候,

AB


PS:如果你有很多数据需要像那样进行搜索,请查看trigram索引-

如果:搜索词组是“某个%词组”,结果必须是“某个测试词组”@dmk你能更新问题以纠正你的意图吗?我需要搜索,正如我给出的示例。我不能用平淡的词组来抬头看。我需要从字符串开始的部分短语+从中间的部分,可能从结尾的部分。类似正则表达式的东西。在postgres中,它可以用%symbolTry来完成,这对于正则表达式看看我的答案:我不知道它是否也适用于Postgresql,但我认为它也适用,因为它有类似str_pos和position的函数。