C# sql语句到表达式树

C# sql语句到表达式树,c#,expression-trees,C#,Expression Trees,我想知道如何将sql字符串转换为表达式树。目前,在Linq to SQL中,表达式树被转换为SQL语句。你怎么走另一条路?你怎么翻译 select * from books where bookname like '%The%' and year > 2008 到c中的表达式树中 更新 实体框架使用实体SQL语言。不确定这是否是你想要的 我不知道是否有更简单的方法,但我为SQL表达式编写了一个lexer和解析器,并将其写入了一个自定义的抽象语法树中,因为当时我不知道.net的表达式树,

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

select * from books where bookname like '%The%' and year > 2008 
到c中的表达式树中

更新

实体框架使用实体SQL语言。不确定这是否是你想要的


我不知道是否有更简单的方法,但我为SQL表达式编写了一个lexer和解析器,并将其写入了一个自定义的抽象语法树中,因为当时我不知道.net的表达式树,也不太喜欢解析SQL

语法不是很好解析,因为顺序根据上下文而不同,例如not in not in vs is not,标记重载括号用于覆盖默认运算符优先级,而括号用于创建列表,如x in 1、2等

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


所以,写自己的肯定是可能的,尽管很乏味。

嗯……有点。动态Linq允许您将Linq lambda表达式参数指定为字符串,但您仍然必须指定扩展方法。请直接选择Linq语句的.Where。最好不要使用动态Linq,而完全从System.Linq.Expressions生成。您找到了解决此问题的方法吗。我还需要从c中的sql字符串获取表达式树