我希望允许我们的一些业务分析师在适用的情况下使用 linq 而不是 SQL 进行编写。企业永远不会允许安装 linqpad,那么我从哪里开始学习如何在 vs2008 项目中允许简单的 linq 查询或表达式呢?
.net 是否有某种类型的 eval() 函数可以编译并运行 linq 表达式?
查看本教程,了解动态执行代码。它非常完整,如果您愿意,您可以简单地限制对 Linq 命名空间和 DAL 的使用。您还可以添加检查以确保它们不会(例如)执行多个语句以及高级数据可视化。
我假设你的意思是javascript风格的eval? 不幸的是,BCL、C# 或 VB 中没有 eval 风格的函数来提供您正在寻找的行为。
不直接,但您可以构建后期绑定表达式并调用它们。不同之处在于您必须实现自己的表达式生成器或 DSL+ 解析器。我只需要支持 WHERE 子句,因此我通过 XML 序列化实现了 Predicate 对象,这样我就拥有了人类可读的持久性格式。如果您想要更像 SQL 的东西,您可以使用 Scott Gu 的动态 LINQ 查询库,它将解析关键表达式类型(Where、OrderBy、Select 等)的 LINQ 语法谓词。如果您不需要完整的 LINQ 语法(即您可以分隔每个表达式谓词),那么您可以直接使用它。如果您需要完整的 LINQ 语法,那么您必须添加一些解析,但这实际上只是查找关键字-谓词对并动态执行它们的问题。