А>Мне надо как-то цеплять join'ы динамически. То есть что-то похожее на:
ну where условия так точно можно добавлять. А раз можно их, то почему не всё остальное?
Единственное надо определиться с возвращаемым таким методом типом — видимо он должен быть "на все случаи жизни".
А>И в целом как думаете, стоит использовать LINQ to SQL для этих целей?
я б сказал, что именно для этого и стоит. Имхо, если бы не было динамических построений SQL можно было бы обходиться вообще безо всяких ORM и писать запросы ручками.