SQL语句转换为表达式树

7

我想知道如何将一个SQL字符串翻译成表达式树。目前,在Linq to SQL中,表达式树被翻译成SQL语句。那么反过来怎么做呢?你会如何翻译呢?

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

在C#中将其转换为表达式树?

你找到这个问题的解决方案了吗?我也需要在C#中从SQL字符串获取表达式树。 - Saravanan
2个回答

0

嗯...有点像。动态 Linq 允许您将 Linq Lambda 表达式参数指定为字符串,但您仍然必须直接指定 Linq 语句的扩展方法(.Select、.Where)。 - Robert Harvey
最好不要使用动态LINQ,而是纯粹使用System.Linq.Expressions构建。 - Joo Park

0

我不知道是否有更简单的方法,但我为SQL表达式编写了一个词法分析器和解析器,生成了自定义的抽象语法树(当时我还不知道.net的表达式树),而且我并不喜欢解析SQL。

这种语法在解析上并不友好,因为顺序取决于上下文(例如,在NOT INIS NOT中的not),标记也是重载的(用于覆盖默认运算符优先级的括号与用于创建列表的括号,如WHERE x IN (1, 2))等等。

显然,使用解析器生成器而不是自己编写词法分析器和解析器会使事情变得更容易,但我不知道是否有更专门针对SQL的工具。

因此,编写自己的解析器肯定是可行的,尽管有些繁琐。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接