加入/链接两个表达式

时间:2016-12-08 13:09:14

标签: c# linq-expressions

如何将两个表达式组合/连接/链接成一个?

E.g

Expression<Func<A,object>> first = x => x.B.C;
Expression<Func<C,object>> second = x => x.D.E;

最终结果与此相同:

Expression<Func<A,object>> result = x => x.B.C.D.E;

上面示例中的属性访问器是使用类名编写的,只是为了可读性。

使用此处说明的方法:Combining two expressions into a pipeline结果相同但表达式不同。

是否可以加入以使结果等于x.B.C.D.E而不是Invoke&#39;

1 个答案:

答案 0 :(得分:0)

你可以这样做:

PhpRenderer

您应该转换为C,因为您假设第一个表达式返回var param = Expression.Parameter(typeof(A)); var i1 = Expression.Invoke(first, param); var i1Convert = Expression.Convert(i1, typeof(C)); var i2 = Expression.Invoke(second, i1Convert); var i2Convert = Expression.Convert(i2, typeof(object)); var result = Expression.Lambda(i2Convert , param); ,而不是C