Linq: "Или" эквивалент Where()

Есть ли метод в Linq, где вы можете использовать для построения строк SQL, таких как "... где (a = 1) ИЛИ (a = 2)"?

Ответ 1

Вы можете сделать это в рамках предложения 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 );

Ответ 2

Вы можете использовать стандартные булевы операторы .NET в вашем одном месте where:

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

Ответ 3

Вы используете все те же операторы, что и в обычном С# === > || для "или" && для "и" и т.д.

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

Ответ 5

в вашем вызове .Where() используйте стандартный логический оператор "Or", ||.

var query = items.Where(item => (item == 1 || item == 2));

Все, что имеет место, - это логическое сравнение на все, что вы хотите, чтобы вы могли заполнить его с помощью как можно большей условной логики.