【问题标题】:sql statement to Expression treesql语句到表达式树
【发布时间】:2010-05-14 23:31:57
【问题描述】:

我想知道如何将 sql 字符串转换为表达式树。目前,在 Linq to SQL 中,表达式树被转换为 sql 语句。另一条路怎么走?你会怎么翻译

select * from books where bookname like '%The%' and year > 2008 

C# 中的表达式树?

【问题讨论】:

  • 你找到这个问题的任何解决方案了吗?我还需要从 c# 中的 sql 字符串中获取表达式树

标签: c# expression-trees


【解决方案1】:

【讨论】:

  • 嗯...有点。动态 Linq 允许您将 linq lambda 表达式参数指定为字符串,但您仍然必须直接指定 linq 语句的扩展方法(.Select、.Where)。
  • 不使用动态 linq 而是纯粹从 System.Linq.Expressions 构建会很好
【解决方案2】:

我不知道是否有更简单的方法,但我将用于 SQL 表达式的词法分析器和解析器写入自定义抽象语法树(因为我不知道 .net 的 表达式树时间),我并不真正喜欢解析 SQL。

语法对解析不是很友好,因为顺序因上下文而异(例如,不在NOT INIS NOT 中),标记被重载(用于覆盖默认运算符优先级的括号与括号创建一个列表,如WHERE x IN (1, 2)) 等等。

显然,使用解析器生成器而不是自己进行词法分析和解析会使事情变得更容易,但我不知道是否有更具体的 SQL。

所以,尽管很乏味,但自己编写绝对是可能的。

【讨论】:

    猜你喜欢
    • 2010-12-28
    • 1970-01-01
    • 1970-01-01
    • 2021-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-18
    • 2021-11-22
    相关资源
    最近更新 更多