"Or" equivalent in Linq Where() lambda expression
Is there a method in Linq where you can use to build SQL strings like "...where (a=1) OR (a=2)"?
You can certainly do it within a Where clause (extension method). If you need to build a complex query dynamically, though, you can use a PredicateBuilder.
var query = collection.Where( c => c.A == 1 || c.B == 2 );
Or using a 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 );
You can use the standard .NET boolean operators in your single where clause:
MyDataSource.Where(data => data.a == 'a' || data.a == 'b')
You use the all the same operators as in normal C# ===> || for "or" && for "and" etc.
var something = from s in mycollection
where s.something == 32 ||
s.somethingelse == 45
select s
in your .Where()
call use the standard Boolean 'Or' operator, ||
.
var query = items.Where(item => (item == 1 || item == 2));
All the Where call does is a Boolean comparison on anything you want, so you can fill it with as much conditional logic as you wish.