使用OR和动态查询在Entity Framework中进行动态查询

时间:2012-10-19 03:13:41

标签: entity-framework

给出这样的字符串:

var filterOptions = "First Bank";

一个包含Grantee列和Grantor列的表,如何使用EF创建一个将生成以下where子句的查询:

... where (Grantor like '%First%' and Grantor like '%Bank%') or (Grantee like '%First%' and Grantee like '%Bank%')

请记住,filterOptions是传入的parm,因此它可以很容易地包含3个或4个单词而不仅仅是两个...在这种情况下,每个列都需要其他类似的子句。

如果不是这部分的OR部分,我会做以下事情(这将有助于更好地了解我想要实现的目标。

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

就像我说的那样,它试图将OR部分添加到另一个列中,这个列会引发我的循环。

1 个答案:

答案 0 :(得分:3)

首先,阅读下面的博客,然后您将了解如何进行OR操作: http://www.albahari.com/nutshell/predicatebuilder.aspx

其次,如果您正在使用Entity Framework,请阅读另一篇博客,它为Entity Framework提供了更好的“谓词构建器”实现: http://petemontgomery.wordpress.com/2011/02/10/a-universal-predicatebuilder/