0

プログラムでEFクエリ(ラムダを使用した拡張メソッド)を作成するにはどうすればよいですか?基準を理解しています。擬似コードは次のとおりです。

var query = repository.Where(x => x.Name == "aName");

foreach(string filter in filters)
{
   query = query.Where(x => x.FilterValue.Contains(filter))
}

しかし、私が欲しいのはand演算子ではありません。または演算子が欲しいのですが。どうすればよいですか?コードで複雑な基準ツリーを作成するにはどうすればよいですか?

4

1 に答える 1

1

http://www.albahari.com/nutshell/predicatebuilder.aspx

PrdicateBuilderは優れたソリューションです。しかし、それは複雑で、理解するのはそれほど簡単ではありません。コメント内の他の質問へのリンクを参照してください。

また、これは便利であることがわかりました。他の方向から来ると便利な場合があります。

string[] filter = {"A", "B"};
var returnValue = repository
                .Where(x => x.Name == "aName")
                .Where(x => filter.Any(f => (x.FilterValue).Contains(f)))
                .ToList();
于 2011-08-24T14:36:12.527 に答える