【问题标题】:Can I add a linq compiler to my project?我可以在我的项目中添加 linq 编译器吗?
【发布时间】:2010-11-18 23:47:43
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

        • +1 这样我可以将代码片段存储在 SQL 服务器中,在运行时下载它们。
        • 当您说高级数据可视化时,我想您不知道我如何使用对象的默认调试器显示,对吗?无论是鼠标悬停还是监视窗口版本。
        • 不,我不知道该怎么做。我更多地考虑为查询结果提供 PropertyEditor 或 TreeView 数据绑定。
        【解决方案4】:

        我假设您的意思是 javascript 样式的 eval?不幸的是,BCL、C# 或 VB 中没有 eval 样式函数可以提供您正在寻找的行为。

        【讨论】:

        • @Downvoter,需要解释一下吗?有时这个问题的答案是“你想做的事不可能以你想做的方式”
        • 同意 - 非常糟糕的形式,尤其是没有解释。
        猜你喜欢
        • 1970-01-01
        • 2020-03-20
        • 2019-09-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-25
        • 2014-09-10
        相关资源
        最近更新 更多