Entity framework 在实体框架中使用OR和Contains进行动态查询

Entity framework 在实体框架中使用OR和Contains进行动态查询,entity-framework,Entity Framework,给定如下字符串: var filterOptions = "First Bank"; 对于一个包含Grantee列和Defender列的表,如何使用EF创建一个查询,该查询将生成以下where子句: ... where (Grantor like '%First%' and Grantor like '%Bank%') or (Grantee like '%First%' and Grantee like '%Bank%') 请记住,filterOptions是传入的parm,因此它可以很容

给定如下字符串:

var filterOptions = "First Bank";
对于一个包含Grantee列和Defender列的表,如何使用EF创建一个查询,该查询将生成以下where子句:

... where (Grantor like '%First%' and Grantor like '%Bank%') or (Grantee like '%First%' and Grantee like '%Bank%')
请记住,filterOptions是传入的parm,因此它可以很容易地包含3或4个单词,而不仅仅是两个。。。在这种情况下,每列都需要额外的like子句

如果不是因为这个或部分原因,我会做以下事情(这将有助于更好地了解我正在努力实现的目标)

foreach(var word in filterOptions)
{
    var text = "%" + word + "%";
    query = query.Where(r => SqlMethods.Like(r.Grantee,text));
}

正如我所说,它试图添加OR部分,而另一列会让我陷入循环。

首先,阅读下面的博客,然后您将知道如何执行OR操作:

其次,如果您正在使用实体框架,请阅读另一篇博客,它为实体框架提供了更好的“predicatebuilder”实现:

首先,阅读下面的博客,然后您将知道如何执行OR操作:

其次,如果您正在使用实体框架,请阅读另一篇博客,它为实体框架提供了更好的“predicatebuilder”实现:

您尝试过包含吗?是的,但这实际上与SqlMethods.Like()的功能相同。我可以将上面的代码改为:query=query.Where(r=>r.Grantee.Contains(word))。但是,这无助于解决或问题…我仍然无法将或授权人和被授权人放入同一个查询中。您是否尝试过包含?是的,但这实际上与SqlMethods.Like()的作用相同。我可以将上面的代码改为:query=query.Where(r=>r.Grantee.Contains(word)).然而,这无助于解决或解决问题…我仍然没有办法让或授予人和受让人进入同一个查询。