给出这样的字符串:
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部分添加到另一个列中,这个列会引发我的循环。
答案 0 :(得分:3)
首先,阅读下面的博客,然后您将了解如何进行OR操作: http://www.albahari.com/nutshell/predicatebuilder.aspx
其次,如果您正在使用Entity Framework,请阅读另一篇博客,它为Entity Framework提供了更好的“谓词构建器”实现: http://petemontgomery.wordpress.com/2011/02/10/a-universal-predicatebuilder/