Я 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);
}
То, что кажется, что ты пробуешь сделать, состоит в том, чтобы обсуждать все элементы с одним Пойдите внутри списка 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 ...)
Но ты не нуждаешься в том, чтобы приложить условия с циклом, если то, что ты хочешь, состоит в том, чтобы получать те элементы, свойство которых государство совпало с каким-либо из Ids элементов состояний, он тебе достаточен с:
query = query.Where(p => estados.Any(e => e.Id == p.Estado));
Хотя вопрос уже этот ответ, я добавляю конкретизацию, которая имеет общее с вопросом.
Чтобы прилагать условия с linq ты можешь использовать PredicateBuilder
Этот класс добавляет методы расширения к классу Expression и один из них - Or, с которым ты можешь готовить query Linq динамической формы.
PredicateBuilder включен внутри пакета LinqKit
Ясный пример Предикате Буильдер
Привет!