0

我读过表达式树用于构建动态查询。我的困惑是,同样的事情也可以通过简单的字符串来实现。例如,假设这是一个从表中获取产品的示例查询:

string productName = Console.Read();
var result = from products in context.Products
             where product.Name.Equals(productName)
             select product;

相反,即使我们使用普通的 ADO.Net SQL 提供程序,我们也可以构建动态查询,如下所示:

string productName = Console.Read();
string query= "Select * from tableName where productname=" + productName;

那么使用表达式树有什么好处呢?同样,在使用表达式树编写动态代码时,我们不能简单地将整个代码存储为字符串并编写自定义解析逻辑以在运行时对其进行评估吗?

事实上,这个问题不是特定于表达式树,而是一般的树。

4

1 回答 1

2

此语法可以跨 CLR 对象和关系数据库堆栈进行操作。这是一种众所周知的查询语法,在运行时会被转换为数据库的正确查询字符串。你得到的好处是你可以换掉你的数据库技术,理论上它可以继续工作。如评论中所述,您还会在编译时而不是运行时被告知错误。

于 2013-09-09T07:15:34.587 回答