使用LINQ表达式的文本表示

时间:2010-12-29 15:07:23

标签: c# linq entity-framework asp.net-mvc-2

在我的项目中,我使用了很多LINQ表达式,我允许用户通过在文本输入中键入linq查询来键入自己的查询

那么,是否可以从包含这个的文本中创建LINQ表达式? 而且,是否有可能使文本等同于linq查询? (比如来自FOO in bar select foo)

提前感谢

4 个答案:

答案 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文件夹中有一些内容),尽管它没有很好的文档记录。这里有一个简短的介绍:

http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspx