Я следил за этой темой: текст ссылки
Джейсон приводит пример:
public static Expression<TDelegate> AndAlso<TDelegate>(this Expression<TDelegate> left, Expression<TDelegate> right)
{
return Expression.Lambda<TDelegate>(Expression.AndAlso(left, right), left.Parameters);
}
и его использование как таковое:
Expression<Func<Client, bool>> clientWhere = c => true;
if (filterByClientFName)
{
clientWhere = clientWhere.AndAlso(c => c.ClientFName == searchForClientFName);
}
if (filterByClientLName)
{
clientWhere = clientWhere.AndAlso(c => c.ClientLName == searchForClientLName);
}
У меня есть таблица заказов, и я следовал приведенному выше примеру, меняя имена столбцов, и получаю аналогичную ошибку, которую создатель сообщения имел
Двоичный оператор AndAlso не определен для типов "System.Func
2[Models.Order,System.Boolean]' and 'System.Func
2 [Models.Order, System.Boolean]".
У кого-нибудь есть мысли о том, чего я не хватает?
ОБНОВЛЕНО:
Эрик, я далее следил за тем, что спрашивал пользователь предыдущего сообщения, здесь текст ссылки
У пользователя есть этот
Expression<Func<Client, bool>> clientWhere = c => true;
Expression<Func<Order, bool>> orderWhere = o => true;
Expression<Func<Product, bool>> productWhere = p => true;
if (filterByClient)
{
clientWhere = c => c.ClientID == searchForClientID;
}
Теперь, если у него будут различные условия в filterByClient
, скажем, у него либо есть clientid
, и/или какое-то другое имя столбца, как бы построить выражение clientWhere
?