“Или” эквивалентный в Linq, Где () лямбда-выражение

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

85
задан Liam 3 January 2018 в 14:22
поделиться

5 ответов

Вы, безусловно, можете сделать это в одобренном пункте (метод расширения). Если вам нужно динамически строить сложный запрос, вы можете использовать PredicateBueld .

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

Или используя предикатный элемент

 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 );
177
ответ дан 24 November 2019 в 08:12
поделиться

Одним из растворов может быть динамическим LINQ:

( http://weblogs.asp.nest/scottgu/archive/2008/01/07/dynamic-linq-part---us-the-linq -dynamic-query-liblic.aspx )

4
ответ дан 3 July 2019 в 10:02
поделиться

В вашем . Где () Вызов Используйте стандартный логический «или» оператор, || .

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

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

1
ответ дан 24 November 2019 в 08:12
поделиться

Вы можете использовать стандартные .NET Boolean Operators в вашем предложении White Where:

MyDataSource.Where(data => data.a == 'a' || data.a == 'b')
24
ответ дан 24 November 2019 в 08:12
поделиться

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

var something = from s in mycollection
                where s.something == 32 || 
                      s.somethingelse == 45 
                select s
18
ответ дан 24 November 2019 в 08:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: