我可以在项目中添加linq编译器吗?

时间:2009-08-12 14:39:58

标签: .net linq-to-sql .net-3.5 compiler-construction

我想允许我们的一些业务分析师在适用的情况下用linq而不是SQL编写。企业永远不会允许安装linqpad,那么我将从哪里开始学习如何在vs2008项目中允许简单的linq查询或表达式?

.net的eval()函数是否有某种类型可编译并运行linq表达式?

4 个答案:

答案 0 :(得分:3)

查看动态执行代码的this tutorial。它非常完整,如果你愿意,你可以简单地限制使用Linq名称空间和你的DAL。您还可以添加检查以确保它们(例如)不执行多个语句以及高级数据可视化。

答案 1 :(得分:2)

我假设你的意思是javascript风格评估?遗憾的是,在BCL,C#或VB中没有eval样式函数可以提供您正在寻找的行为。

答案 2 :(得分:1)

答案 3 :(得分:0)

不直接,但您可以构建后期绑定表达式并调用它们。不同之处在于您必须实现自己的表达式构建器或DSL +解析器。我只需要支持WHERE子句,所以我用XML序列化实现了一个Predicate对象,所以我会有一个人类可读的持久性格式。如果你想要更像SQL的东西你可以使用Scott Gu的动态LINQ查询库,它将解析关键表达式类型的LINQ语法谓词(Where,OrderBy,Select,其他一些)。如果您不需要完整的LINQ语法(即您可以分隔每个表达式谓词),那么您可以直接使用它。如果你需要一个完整的LINQ语法,那么你将不得不添加一些解析,但它实际上只是找到关键字 - 谓词对并动态执行它们。

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