Is there a best practice on how to handle DAL methods with complex search logic? I'm talking about the business requirements like
"List customers who's companies are active or in sleep status, have more than 1000$ of orders in the last quarter, customer must not be deleted, company must have office in London or New York and Paris..."
These requirements quickly make your CustomerDAL.GetCustomers(...) have over 9000 parameters, not to mention that it changes all the time which can be a pain if you have lots of layers, interfaces, webservices etc.
Are there other good ways to clean up methods like that, besides creating a CustomerSearchParameters struct which you create and set up before calling the method itself?