Filter Collection by Multiple Criteria
You can build the LINQ query in several steps by appending new where clauses

IEnumerable&lt;receipt&gt; query = ReceiptList;
if (customer != null) {
    query = query.Where(x =&gt; x.CustomerId == customer.ID);
}
if (number != null) {
    query = query.Where(x =&gt; x.Number.Contains(number));
}
if (date != null) {
    query = query.Where(x =&gt; x.Date == date);
}
...
ReceiptListView = query.ToList();


This reduces the complexity from O(2ⁿ) to O(n)