У меня есть два выражения linq, которые я хочу комбинировать, но мой код дает мне ошибку. Бинарный оператор И не определен для типов 'System.Func`2[Web.Entities.Customer,System.Boolean]'
и 'System.Func`2[Web.Entities.Customer,System.Boolean]'
.расчесывание двух выражений linq
У меня есть 2 выражения, например ...
Expression<Func<Customer, bool>> filter = c => c.Active;
Expression<Func<Customer, bool>> filterz = c => c.Visible;
я затем объединить их
filter = Expression.Lambda<Func<Customer, bool>>(Expression.And(filter, filterz));
Любая помощь по этой проблеме?
спасибо ....
вот updateed код, указанный на рисунке ответ.
public class SwapVisitor : ExpressionVisitor
{
private readonly Expression from, to;
public SwapVisitor(Expression from, Expression to)
{
this.from = from;
this.to = to;
}
public override Expression Visit(Expression node)
{
return node == from ? to : base.Visit(node);
}
}
filter = Expression.Lambda<Func<Customer, bool>>(Expression.AndAlso(
new SwapVisitor(filter.Parameters[0], filterz.Parameters[0]).Visit(filter.Body), filterz.Body), filterz.Parameters)
Что вы хотите получить в результате? – Tony
Я хочу передать комбинированное выражение в мой общий репозиторий и передать всем клиентам, которые являются активными и видимыми. У меня уже есть общий общий репозиторий, который я отправляю в фильтр выражений и передаю значения таблицы базы данных через фильтр. –