I recently stumpled upon the problem to dynamically create Linq expressions during runtime. Most examples I found deal with the rather simple task of just comparing one prop
I recommend you look at these links:
Joseph and Ben Albahari's PredicateBuilder
The LINQ dynamic query library
I haven't used either for a while, but one or the other should help.