Динамический linq: передача всего запроса в виде строки

#linq

#linq

Вопрос:

Глядя на динамический Linq, можно использовать строки для определения ключевых частей запроса. Мой вопрос в том, возможно ли передать весь запрос в виде строки?

ie: var foo = «из …»

Комментарии:

1. вы получили ответ, он полезен

2. Привет, Пранай, передача строк SQL не была моей целью, но спасибо за предложение. 🙂

Ответ №1:

LINQ расшифровывается как «Запросы, интегрированные с языком» — он компилируется с остальной частью кода, а не анализируется при запуске. Вы можете использовать Microsoft.CSharp.CSharpCodeProvider для компиляции вашего запроса во время выполнения — но вам нужно будет заранее знать, какие локальные объекты вы хотите отправить в запрос.

Комментарии:

1. Спасибо, на самом деле это самый близкий ответ, хотя я не уверен, как бы я это сделал.

2. Ну, это действительно зависит от того, что вы хотите сделать. Вот небольшое руководство по использованию CSharpCodeProvider: mattephraim.com/blog/2009/01/02 /. … По сути, вам нужно скомпилировать класс, содержащий статический метод, который выполняет запрос LINQ, который вы хотите. И затем вызовите этот метод. Я предполагаю, что вы не подключаетесь к SQL, поэтому, если вы подключаетесь к XML, вы просто отправляете XML-документ этому методу, но если вы подключаетесь к другим структурам данных, вам нужно точно спланировать, какие объекты вы хотите отправить этому методу.

Ответ №2:

Это невозможно в динамическом LINQ — динамический LINQ заменяет только определенные части запроса. Вы можете использовать ExecuteQuery для контекста данных в LINQ to SQL или SqlQuery для a DbSet<T> , однако, для выполнения определенных команд SQL.