У меня есть форма с несколькими полями на ней (название компании, почтовый индекс и т.д.), которая позволяет пользователю искать компании в базе данных. Если пользователь вводит значения в более чем одном поле, мне нужно выполнить поиск по всем этим полям. Я использую LINQ для запроса базы данных.
До сих пор мне удалось написать функцию, которая будет смотреть на их вклад и превратить ее в список выражений. Теперь я хочу превратить этот список в одно выражение, которое затем я могу выполнить через поставщика LINQ.
Моя первоначальная попытка была следующей:
private Expression<Func<Company, bool>> Combine(IList<Expression<Func<Company, bool>>> expressions)
{
if (expressions.Count == 0)
{
return null;
}
if (expressions.Count == 1)
{
return expressions[0];
}
Expression<Func<Company, bool>> combined = expressions[0];
expressions.Skip(1).ToList().ForEach(expr => combined = Expression.And(combined, expr));
return combined;
}
Однако это не удается с сообщением об исключении в строках "Бинарный оператор И не определен для...". Кто-нибудь есть идеи, что мне нужно сделать, чтобы объединить эти выражения?
ИЗМЕНИТЬ: Исправлена строка, в которой я забыл присвоить результат и преобразовать выражения вместе с переменной. Спасибо, что указали, что люди.