我正在使用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);如何将contacts变量‘注入’到Mono.CSharp.Evaluator中,作为查询的一部分进行计算?我这样做对吗?最后,我要么需要结果表达式,要么需要‘IQueryable’字符串的查询。
发布于 2010-09-25 01:59:47
我没有尝试过,但我猜你可以使用Mono编译器来创建一个以IQueryable<Contract>为参数并返回过滤后查询的委托v.类似于:
IQueryable<Contact> contacts = GetContacts();
string query = "new Func<IQueryable<Contact>, IQueryable<Contact>>(contracts =>
from contact in contacts
where contact.Name == \"name\"
select contact)";
var res = Mono.CSharp.Evaluator.Evaluate(query); 然后,您只需将res转换为适当的Func<,>类型并调用它即可获得结果。
https://stackoverflow.com/questions/3788096
复制相似问题