If you want to restrict your result set to those records that satisfy all of the conditions, then you are correct that you should use .And
instead of .Or
, but in order to do that, you need to start with PredicateBuilder.True<ResidentialProperty>()
instead of False
.
This is because before any filters are added, the correct result set contains all records, and each subsequent filter restricts the result set. If you start with False
, none of the records can ever possibly satisfy the predicate.