我想知道如何将sql字符串转换为表达式树。目前,在Linq to SQL中,表达式树被转换为sql语句。怎么走另一条路?你会怎么翻译
select * from books where bookname like '%The%' and year > 2008
进入c#中的表达式树?
答案 0 :(得分:0)
http://weblogs.asp.net/rajbk/archive/2007/09/18/dynamic-string-based-queries-in-linq.aspx
<强>更新强>
Entity框架具有Entity SQL语言。不确定这是不是你想要的。
答案 1 :(得分:0)
我不知道是否有更简单的方法,但是我将SQL表达式的词法分析器和解析器写入自定义的抽象语法树(因为我不知道.net的 Expression Trees at时间)我并不喜欢解析SQL。
语法不是非常易于解析,因为顺序因上下文而异(例如,不在NOT IN
与IS NOT
中),令牌被重载(用于覆盖默认运算符优先级的括号)与在WHERE x IN (1, 2)
)中创建列表的括号相对应。
显然使用解析器生成器而不是执行自己的lexing和解析会使事情变得更容易,但我不知道是否有更具体的SQL。
所以,写你自己的确是可能的,虽然很乏味。