【发布时间】:2013-05-27 08:57:39
【问题描述】:
我有一个表达式类型变量。它有一个表达式来过滤数据。 例如,表达式让 SQL 获取 LOCATION 为 'KOR' 的数据。
{it => (it.LOCATION == "KOR")}
此表达式将是 SQL 语句中的 WHERE 子句。 将 lambda 表达式转换为 Sql 查询看起来很复杂,因为有许多不同的表达式。
如果不从头开始,我怎样才能达到这个目的? 有什么好的图书馆吗?
已添加....
我可以通过调用 ToString() 方法得到一个 lambda 表达式的字符串。
"it => (((it.LOCATION == \"KOR\") OrElse (it.LOCATION == \"FRA\")) AndAlso (it.Value > 30000))"
【问题讨论】:
-
SQL 查询的预期输出是什么?
-
预期输出是 WHERE LOCATION IN ('KOR', 'FRA') AND Value > 30000。
-
如果您正在寻找一个通用的解决方案,您可能会考虑构建一个导致嵌套谓词理论的 sql 子句树的复杂性。 NHibernate 或 Entity Framework 可以以不同的方式帮助您。
-
我将限制词汇表,而不是支持所有表达式,因此实现它不会太困难。感谢您的意见。
-
都是关于嵌套子句的。翻译一个 WHERE 并不难,但是你将如何处理 SELECT..FROM (SELECT..FROM..WHERE) INNER JOIN (SELECT..FROM) WHERE...AND...OR?谓词具有不同的优先级和不同的求解顺序。让我们知道:)