有没有一种简单的方法来合并两个Lambda表达式,如下所示(我知道示例表达式可以手动合并为一个,但如果innerExpression由某个函数返回且事先不知道,则怎么办)。它们具有相同的输入参数类型,因此理论上ParameterExpression可以用于它们两个。
Expression<Func<Source, Subtype>> innerExpression = x => new Subtype {
Subfield1 = x.SomeField;
Subfield2 = x.SomeOtherField;
}
Expression<Func<Source, Target>> finalExpression = x => new Target {
Field1 = x.Other1,
Field2 = x.Other2,
Field3 = x.Items.Where(y => y.Field == true).SingleOrDefault(),
Field4 = innerExpression(x) // <= Does not work that way
}