为子 属性 创建 MethodCallExpression

Create a MethodCallExpression for a sub property

有一个简化场景的工作示例:

//find all tasks with History item with id equals 117992
var exprString = "Id = 117992"; 

var innerLambda = DynamicExpressionParser.ParseLambda(typeof(History), typeof(bool), exprString);

var resultCallExpression = Expression.Call(
   typeof(Enumerable), nameof(Enumerable.Any), new[] { typeof(History) },
   Expression.Property(givenTaskExpression, "Histories"), innerLambda
);

但是我无法修改该示例以根据低于一级的 属性 提供过滤器表达式。

请查看给定的图表。我有一个类型为“任务”的给定表达式 (givenTaskExpression),现在我想生成一个结果表达式,它在芯片列表中使用过滤器 lambda。

例如给我所有的任务,其中有一个带有 Id = '1234'

的芯片

类似的东西:

var exprString = "Id = '1234'"; 

var innerLambda = DynamicExpressionParser.ParseLambda(typeof(Chip), typeof(bool), exprString);

var chipsProp = Expression.Property(
   Expression.Property(givenTaskExpression, nameof(Task.Case)),
   nameof(Case.Chips));

var resultCallExpression = Expression.Call(
   typeof(Enumerable), nameof(Enumerable.Any), new[] { typeof(Chip) }
   chipsProp, innerLambda
);