Это зависит от ваших обстоятельств: как быстро вам это нужно, какова ваша отправная точка и так далее.В непринужденном мире, я думаю, лучше всего создать собственную библиотеку для построения динамических запросов.Вы можете использовать работу Скотта или Джозефа как источник вдохновения, но, в конце концов, все это «дна» в библиотеке Linq.Expression.
Одним из преимуществ подхода «сделай сам» является то, что вам не нужномост от вашего кода к чьей-то структуре.Скорее, вы будете писать код непосредственно на .NET API.Это может быть полезно, когда у вас уже есть представление ваших динамических запросов, например, в модели, которую вы представляете пользователям через пользовательский интерфейс, в файле XML и т. Д. Все, что вам нужно, - это рекурсивно выполнить это представление и создать System.Linq. Выражение как возвращение.
FWIW, моя компания приняла этот подход, когда вышел .NET 3.5, и мы очень довольны результатом.