Я не видел этот проект раньше, но похоже, что он просто компилирует запрос C # в динамическую сборку с использованием CodeDOM. Вот сообщение в блоге о том, как это работает:
http://kenanbek.com/site/post/dynamic-linq-queries-build-linq-queries-from-text-at-runtime/
Если он использует динамическую компиляцию, то, вероятно, он не имеет многих ограничений. Разумеется, он сможет получить доступ только к объектам, передаваемым в метод LinqTextQueryBuilder.SetSource()
.
Я использую нечто подобное, называемое Dynamic Linq, в проекте, над которым я работаю, но это больше для разбора выражений фраз и т. П., А не целых запросов. Он работает немного иначе, так как он анализирует C # -подобное выражение непосредственно в дереве выражений, а не использует CodeDOM и динамическую сборку в качестве посредника. Следовательно, это, вероятно, немного быстрее, но более ограничено.
http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspx