我有两个这样定义的表达式树:
Expression<Func<string, bool>> BoolExpression { get; }
和
Expression<Func<Customer, string>> PropertyExpression { get; }
我需要创建一个新的表达式树,结果相当于:
Customer c = null;
var expression = e1(e2(c));
我可以用 Compile()、Invoke() 来做到这一点:
Customers c = null;
var e3 = e1.Compile().Invoke(e2.Compile().Invoke(c));
但我不能使用 Compile 或 Invoke 方法,因为我使用的是 EntityDataModel。当我将“表达式”传递给 Where 方法时,它会转换为 SQL 查询并传递给数据库。
PS:我想使用 EntityDataModel 做某种查询生成器。有 n 个域和 m 个条件。我想为字段定义 n 表达式,为条件定义 m 表达式,然后将它们组合起来。