Injetando uma variável no Mono.CSharp.Evaluator (tempo de execução compilando uma consulta LINQ a partir da string)

Estou usando a biblioteca Mono.CSharp para emitir código. Após outra pergunta no SO (http://stackoverflow.com/questions/3407318/mono-compiler-as-a-service-mcs), consegui que o Mono.CSharp avaliasse corretamente no Microsoft CLR.

Para adicionar flexibilidade ao meu aplicativo, eu gostaria de poder personalizar uma consulta em tempo de execução - permitindo que o usuário forneça uma consulta LINQ como uma string que é analisada e acessa o banco de dados quando executada.

Dado este trecho básico de código:

IQueryable<Contact> contacts = GetContacts();
string query = "from contact in contacts
                where contact.Name == \"name\"
                select contact";
var queryableResult = Mono.CSharp.Evaluator.Evaluate(query);

Como posso 'injetar' a variável de contatos no Mono.CSharp.Evaluator para ser avaliada como parte da consulta? Estou fazendo isso da maneira certa? No final, eu preciso da expressão resultante ou do IQueryable da string 'query'.

questionAnswers(2)

yourAnswerToTheQuestion