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
Une solution pourrait être Dynamic Linq: