在我的项目中,我使用了很多LINQ表达式,我允许用户通过在文本输入中键入linq查询来键入自己的查询
那么,是否可以从包含这个的文本中创建LINQ表达式? 而且,是否有可能使文本等同于linq查询? (比如来自FOO in bar select foo)
提前感谢
答案 0 :(得分:5)
您可以尝试 NLinq :http://nlinq.codeplex.com
答案 1 :(得分:2)
如果你要承担这项任务,你基本上就是在完成编译器的工作(采用表达式的文本表示并从中创建表达式树。这是很多工作,可能不值得你花时间想到的第一个想法是在linq查询中使用其他类型,然后你就可以动态编译它。明显的缺点是,一旦程序集加载到内存中,你就无法卸载它(除非你开始使用AppDomains),所以这基本上会变成内存泄漏。
由于您使用的是Entity Framework,因此最好的答案可能是使用ESQL http://innocraft.spaces.live.com/blog/cns!919A8CAC315ADF82!239.entry。这总是以文本格式使用,实体框架将为您解析它并在运行时运行查询。
HTH
答案 2 :(得分:0)
是否有可能为用户提供LinqPad(免费)的副本,他们可以创建自己的查询,还可以看到等效的SQL文本吗?
可以找到LinqPad here
答案 3 :(得分:0)
您还可以考虑动态LINQ。它仍然与VS2010捆绑在一起(在Samples文件夹中有一些内容),尽管它没有很好的文档记录。这里有一个简短的介绍: