Динамический Линк?Вероятно, нет
Я собирался предложить Dynamic Linq , но, как говорится в вашем «Правке», это вам не подойдет.
В этом случае я бы сказал, чтоОтвет на ваш вопрос: «Нет лучшего пути».
Является ли Linq лучшим выбором для этого?
Ваш вопрос задает Linq, в частности, Linq to Sql, реализацию того, какчтобы достичь ваших динамических запросов.
Но подумайте, для чего предназначен Linq to Sql.Основные преимущества, которые приходят на ум от Linq to SQL:
- Строго типизированные запросы (перехват ошибок во время компиляции)
- Строго типизированные результаты.Имеется в виду хорошие заранее написанные классы (в случае с Linq для SQL, предварительно сгенерированные)
Теперь, если вы выполняете операторы "Select" и всегда возвращаете фактическую сопоставленную таблицу, то нет никаких причин, по которым вы можете это сделатьне используйте динамическую библиотеку Linq.
Но если вы возвращаете произвольные не отображенные результаты, нет смысла использовать LINQ, на самом деле это не позволит вам.
DataContext.ExecuteQuery<T>(string query)
У класса DataContext
есть метод ExecuteQuery<T>
, но, к сожалению, вы не можете вернуть динамический параметр как T: - (
Linq для SQL и хранимых процедур
Наконец, LINQ to SQL может отображаться на хранимые процедуры. Таким образом, вы можете иметь хранимую процедуру, которая принимает запрос в качестве аргумента, как ваш пример. Однако я считаю, что он имеет те же ограничения ExecuteQuery
с точки зрения типов в canрезультат, хотя не держите меня на этом.
Я бы посмотрел на это как на последний вариант и изучил sproc в конструкторе Linq to SQL, возвращающем либо анонимный, динамический, либо сопоставленный тип.