Реализовать условие типа «И» легко и просто, используя синтаксис метода расширения для вызова Where
несколько раз:
IQueryable<Person> people = _db.Person
.Where(res => res.Departments.ID == deptId);
if (deptType != null)
{
people = people.Where(res => res.Departments.Type == deptType);
}
// Potentially add projections etc.
РЕДАКТИРОВАТЬ: если вам нужна функциональность "ИЛИ", она немного сложна с нуля, так как вам нужно возиться с деревьями выражений. Я предлагаю вам использовать библиотеку PredicateBuilder
:
Expression<Func<Person, bool> predicate = res => res.Departments.ID == deptId;
if (deptType != null)
{
predicate = predicate.Or(res => res.Departments.Type == deptType);
}
IQueryable<Person> people = _db.Person.Where(predicate);