sql语句到表达式树

时间:2010-05-14 23:31:57

标签: c# expression-trees

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

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

进入c#中的表达式树?

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

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

语法不是非常易于解析,因为顺序因上下文而异(例如,不在NOT INIS NOT中),令牌被重载(用于覆盖默认运算符优先级的括号)与在WHERE x IN (1, 2))中创建列表的括号相对应。

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

所以,写你自己的确是可能的,虽然很乏味。