Как использовать “OR” вместо “AND” с многообразными.Where в LINQ?

Я queriendo делать динамический query, в котором посредством for из-за каждого этого повторения он прилагал бы каждое состояние, но назначенный по умолчанию LINQ оставляет мне статью "AND" по мере того, как он пробегает for а следовательно я нуждаюсь в том, чтобы использовать "OR" из-за каждой пробежавшей информации, есть какой-то способ назначенного по умолчанию setear, который он использовал бы or?

for (int i = 0; i < estados.Count; i++)
{                    
    query = query.Where(p => p.Estado == estados[i].Id);
}
2
задан 17.05.2016, 22:53
3 ответа

То, что кажется, что ты пробуешь сделать, состоит в том, чтобы обсуждать все элементы с одним Пойдите внутри списка estados, тогда я предлагаю тебе альтернативу, которая должна прилагать условия:

var ids = estados.Select(e => e.Id).ToList();

query.Where(x => ids.Contains(x.Estado));

Только это, без необходимости for. query, который произведется, будет сходным в

SELECT ....
FROM Table
WHERE Estado IN (e1, e2, e3 ...)
2
ответ дан 24.11.2019, 14:21
  • 1
    Он пошел совершенным Спасибо!!! Ты спас меня – Esteban Garibaldi 17.05.2016, 23:04

Но ты не нуждаешься в том, чтобы приложить условия с циклом, если то, что ты хочешь, состоит в том, чтобы получать те элементы, свойство которых государство совпало с каким-либо из Ids элементов состояний, он тебе достаточен с:

query = query.Where(p => estados.Any(e => e.Id == p.Estado));
2
ответ дан 24.11.2019, 14:21

Хотя вопрос уже этот ответ, я добавляю конкретизацию, которая имеет общее с вопросом.

Чтобы прилагать условия с linq ты можешь использовать PredicateBuilder

Этот класс добавляет методы расширения к классу Expression и один из них - Or, с которым ты можешь готовить query Linq динамической формы.

PredicateBuilder включен внутри пакета LinqKit

Ясный пример Предикате Буильдер

Привет!

0
ответ дан 24.11.2019, 14:21

Теги

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