86 votes

Linq : l'équivalent "Or" de Where()

Existe-t-il une méthode dans Linq que vous pouvez utiliser pour construire des chaînes SQL comme "...where (a=1) OR (a=2)" ?

182voto

tvanfosson Points 268301

Vous pouvez certainement le faire dans une clause Where (méthode d'extension). Cependant, si vous devez construire une requête complexe de manière dynamique, vous pouvez utiliser une clause Where (méthode d'extension). PredicateBuilder .

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

Ou en utilisant un 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 );

24voto

Simon Steele Points 8344

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

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

18voto

Muad'Dib Points 14260

Vous utilisez les mêmes opérateurs qu'en C# normal : ===> || pour "ou" && pour "et", etc.

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

4voto

Randy Minder Points 19262

1voto

Yaakov Ellis Points 15470
var query = ObjectTypes.Where(s => s.a == 1 || s.a == 2)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X