“Ou” équivalent dans Linq Where () lambda expression

Existe-t-il une méthode dans Linq permettant de créer des chaînes SQL telles que “… où (a = 1) OR (a = 2)”?

Vous pouvez certainement le faire dans une clause Where (méthode d’extension). Si vous devez générer une requête complexe de manière dynamic, vous pouvez utiliser PredicateBuilder .

  var query = collection.Where( c => cA == 1 || cB == 2 ); 

Ou en utilisant un PredicateBuilder

  var predicate = PredicateBuilder.False(); predicate = predicate.Or( f => fA == 1 ); if (allowB) { predicate = predicate.Or( f => fB == 1 ); } var query = collection.Where( predicate ); 

Vous pouvez utiliser les opérateurs booléens .NET standard dans votre clause unique where:

 MyDataSource.Where(data => data.a == 'a' || data.a == 'b') 

Vous utilisez les mêmes opérateurs que dans C # ===> || pour “ou” && pour “et” etc.

 var something = from s in mycollection where s.something == 32 || s.somethingelse == 45 select s