1. ホーム
  2. .net

[解決済み] Linq Where()ラムダ式における "Or "の等価性

2023-01-17 05:49:11

質問

Linqで、"...where (a=1) OR (a=2)" のようなSQL文字列を構築するのに使用できるメソッドはありますか?

どのように解決するのですか?

確かにWhere句(拡張メソッド)内でできます。 しかし、複雑なクエリを動的に構築する必要がある場合は PredicateBuilder .

 var query = collection.Where( c => c.A == 1 || c.B == 2 );

またはPredicateBuilderを使う

 var predicate = PredicateBuilder.False<Foo>();
 predicate = predicate.Or( f => f.A == 1 );
 if (allowB)
 {
    predicate = predicate.Or( f => f.B == 1 );
 }

 var query = collection.Where( predicate );