首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将变量注入Mono.CSharp.Evaluator (运行时从字符串编译LINQ查询)

将变量注入Mono.CSharp.Evaluator (运行时从字符串编译LINQ查询)
EN

Stack Overflow用户
提问于 2010-09-24 22:34:53
回答 1查看 2.8K关注 0票数 5

我正在使用Mono.CSharp库来生成代码。在SO (http://stackoverflow.com/questions/3407318/mono-compiler-as-a-service-mcs)上的另一个问题之后,我设法让Mono.CSharp在Microsoft CLR上正确地求值。

为了在我的应用程序中增加灵活性,我希望能够在运行时自定义查询-通过允许用户将LINQ查询作为字符串提供,该字符串被解析并在执行时命中数据库。

给定以下基本代码片段:

代码语言:javascript
复制
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’字符串的查询。

EN

回答 1

Stack Overflow用户

发布于 2010-09-25 01:59:47

我没有尝试过,但我猜你可以使用Mono编译器来创建一个以IQueryable<Contract>为参数并返回过滤后查询的委托v.类似于:

代码语言:javascript
复制
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<,>类型并调用它即可获得结果。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3788096

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档