Внедрение переменной в Mono.CSharp.Evaluator (среда выполнения, компилирующая запрос LINQ из строки)
Я использую библиотеку Mono.CSharp для передачи кода. После еще одного вопроса по SO (http://stackoverflow.com/questions/3407318/mono-compiler-as-a-service-mcs) мне удалось получить правильную оценку Mono.CSharp в Microsoft CLR.
Чтобы добавить гибкости в мое приложение, я хотел бы иметь возможность настраивать запрос во время выполнения, позволяя пользователю предоставлять запрос LINQ в виде строки, которая анализируется и попадает в базу данных при выполнении.
Учитывая этот основной фрагмент кода:
IQueryable<Contact> contacts = GetContacts();
string query = "from contact in contacts
where contact.Name == \"name\"
select contact";
var queryableResult = Mono.CSharp.Evaluator.Evaluate(query);
Как я могу «вставить» переменную контактов в Mono.CSharp.Evaluator, который будет оцениваться как часть запроса? Я иду об этом правильным путем? В конце мне нужно либо полученное выражение, либо IQueryable из строки запроса.