Our datasourcecontrol uses our query api and not Linq. The main reason for this was that we either had to write code to parse linq queries from strings in HTML (... not something useful) or that users could write fragments of queries using lambda expressions, but the problem with lambda expressions is that if they're not used inside a linq query, they're compiled to Func<> instances and not to Expression<Func<>> instances thus not usable for conversion to predicates (left alone the problems with aliases etc. )