Hi,
You can use TypedList for that.
TypedList correspond to custom select statements, where you are in control of every bit of your query.
You can use the designer to prepare your TypedLists structures and paths, and then add filters and other parameters at runtime.
Or you can define them at runtime from scratch by specifying your fields, the joins between your tables etc...