0

给定这样的字符串:

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 是一个传入的参数,因此它可以很容易地包含 3 或 4 个单词,而不仅仅是两个……在这种情况下,每列都需要额外的 like 子句。

如果不是因为 OR 部分,我会做以下事情(这将有助于更好地了解我想要完成的工作。

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

就像我说的那样,它试图将 OR 部分与另一列相加,这让我陷入了循环。

4

1 回答 1

3

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

其次,如果您使用的是实体框架,请阅读另一篇博客,它对实体框架有更好的“谓词构建器”实现:http: //petemontgomery.wordpress.com/2011/02/10/a-universal-predicatebuilder/

于 2012-10-20T16:20:58.007 回答