如何将两个表达式组合/连接/链接成一个?
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;
答案 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
。