Ответ 1
У вас есть несколько вариантов:
-
Сделайте что-то самодовольное, разбор текста и построение дерева выражений. Стандартным подходом к этому было бы использование парсера для синтаксического анализа строки (например, ANTLR).
-
Используйте CodeDOM для компиляции запроса (НЕ рекомендуется для среды производства, так как это медленно, и генерирует сборку для каждой компиляции, которая насытит ваш AppDomain с помощью сборок, если вы сделаете много. если у вас есть какой-то объем - хотя это и делает LINQPad) - http://social.msdn.microsoft.com/Forums/en-US/linqprojectgeneral/thread/6a4defd2-76f0-4865-97b7-130e4ba7b50a
-
Использовать компилятор Mono, который испускает MSIL напрямую (так что сборка не выполняется на сборку и намного быстрее) - Монокомпилятор как служба (MCS)
-
Используйте Dynamic LINQ (имеет некоторые ограничения и ограничения, но в основном делает то, что предлагается в пункте № 1, и является хорошим, легким и имеет возможность разрешать только определенные вызовы методов. Он анализирует текстовый запрос и создает Дерево выражений от него) - http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspx