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