If you aren't using a DB to store your object, everything else is the same except the "generate a SQL query" part. What you should look at is the Specification Pattern. Your specification objects basically have a single method called IsSatisfiedBy that takes in the object to see if it meets the specification. Adding some kind of parameter to the specification based on user input seems like a pretty trivial exercise and sounds like it would work in your case.
Not sure I understand the part about "mappings" but since you're not generating a raw SQL query, just make sure your specification objects are serializable and persist it however you want.
LINQ can do this as can plain ol' C# or Java.