0

次のような文字列を指定します。

var filterOptions = "First Bank";

また、Grantee 列と Grantor 列を持つテーブルで、次の where 句を生成する EF を使用してクエリを作成するにはどうすればよいですか。

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

filterOptions は渡されるパラメーターであるため、2 つではなく 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

次に、Entity Framework を使用している場合は、別のブログを読んでください。Entity Framework の「predicatebuilder」実装が改善されています: http://petemontgomery.wordpress.com/2011/02/10/a-universal-predicatebuilder/

于 2012-10-20T16:20:58.007 に答える