Взгляните на DLINQ , который позволяет вам делать такие вещи, как:
var query =
db.Customers.
Where("City = @0 and Orders.Count >= @1", "London", 10).
OrderBy("CompanyName").
Select("new(CompanyName as Name, Phone)");
Обратите внимание, что выражения в запросе - это строки, которые могли быть динамически созданы во время выполнения.
В библиотеке есть несколько очень приятных плюсов, включая неявное преобразование в деревья выражений, которые вы сможете плавно интегрировать в существующее дерево выражений.
( DLINQ довольно удивителен, если вспомнить, как он писал в 2006 году, и все еще находится в авангарде технологических достижений C # ; Загрузка включена в каталог \ LinqSamples \ DynamicQuery здесь )