Ответ 1
PredicateBuilder - идеальное решение для вашей проблемы. Это позволяет вам одновременно добавлять индивидуальные "AND", а также "OR".
Я использую LINQ для создания предложения where следующим образом:
var query = from x in context.Xs
select x;
if (y == ...)
{
query = query.Where(x => x.Y == 1);
}
У меня есть куча этих утверждений "if.... where". Проблема, которую я имею, заключается в том, что все эти участники присоединяются к предложениям, использующим AND, но мне нужно, чтобы все мои предложения where использовали OR. Есть ли простой способ передать этот код в код OR? Или даже самый простой способ сделать это с помощью OR?
Спасибо.
PredicateBuilder - идеальное решение для вашей проблемы. Это позволяет вам одновременно добавлять индивидуальные "AND", а также "OR".
Вы можете сделать что-то вроде:
var query = from x in context.Xs
where
(x.X == 1) ||
(x.Y == 2) ||
(x.Z == "3")
select x;
Я бы предложил использовать деревья выражений для динамического построения запроса:
(MSDN) Практическое руководство. Использование деревьев выражений для создания динамических запросов
Вы также можете использовать PredicateBuilder
(что делает что-то похожее под капотом) для динамического создания Predicate, а затем передать окончательный Predicate к методу Where.