我有两个表达式树,定义如下:
private Expression<Func<TEntity, TPropertyResult>> PropertyAccessor { get; set; }
并且
private Expression<Func<TPropertyResult, bool>> TestExpression { get; set; }
我需要创建一个新的表达式树,其结果相当于以下内容:
var expression = p => this.TestExpression(this.PropertyAccessor(p));
当我使用
Expression.Invoke(this.TestExpression, this.PropertyAccessor)
时,出现以下错误:
在我的测试中,{"类型为 'System.Func`2[MyEntity,System.String]' 的表达式不能用于类型为 'System.String' 的参数"}
TPropertyResult
是一个字符串。我尝试过使用
Expression.Call
或Expression.Invoke
,但没有成功。我应该使用什么?
{"无法将类型为 'System.Func
2[MyEntity,System.String]' 的表达式用于类型为 'System.String' 的参数"}。这是当我尝试将字符串指定为
TPropertyResult` 时出现的问题,但问题并不仅限于字符串。 - Pierre-Alain Vigeant