Есть ли метод в Linq, где вы можете использовать для построения строк SQL, таких как "... где (a = 1) ИЛИ (a = 2)"?
Linq: "Или" эквивалент Where()
Ответ 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
Ответ 4
Одним из решений может быть динамический Linq:
Ответ 5
в вашем вызове .Where()
используйте стандартный логический оператор "Or", ||
.
var query = items.Where(item => (item == 1 || item == 2));
Все, что имеет место, - это логическое сравнение на все, что вы хотите, чтобы вы могли заполнить его с помощью как можно большей условной логики.