And
- бинарный оператор А; Вы имеете в виду Expression.AndAlso
, т.е.
pred = Expression.AndAlso(pred, {new bit})
Однако я подозреваю, что вы делаете это нелегко. Проще использовать такие вещи, как:
IQueryable<Foo> source = ...
if(condition1) {
source = source.Where(predicate1);
}
if(condition2) {
source = source.Where(predicate2);
}
Например:
IQueryable<User> source = ...
string name = Request["Name"];
if(!string.IsNullOrEmpty(name)) {
source = source.Where(user => user.ContactFirst.Contains(name)
|| user.ContactLast.Contains(name));
}
string company = Request["Company"];
if(!string.IsNullOrEmpty(company)) {
source = source.Where(user => user.Company.Contains(company));
}