public override Expression CreateDownwardsFilterExpression(ParameterExpression parameterExpression, TreeNodeDynamicContext dynamicContext) { var replaceContext = new DynamicValuesHelperReplaceContext(dynamicContext.CurrentEntityToken, dynamicContext.Piggybag); XElement markup = this.FunctionMarkupDynamicValuesHelper.ReplaceValues(replaceContext); BaseRuntimeTreeNode baseRuntimeTreeNode = FunctionTreeBuilder.Build(markup); LambdaExpression expression = GetLambdaExpression(baseRuntimeTreeNode); if (expression.Parameters.Count != 1) { throw new InvalidOperationException("Only 1 parameter lamdas supported when calling function: " + markup); } ParameterChangerExpressionVisitor expressionVisitor = new ParameterChangerExpressionVisitor(expression.Parameters.Single(), parameterExpression); Expression resultExpression = expressionVisitor.Visit(expression.Body); return resultExpression; }
public override Expression CreateDownwardsFilterExpression(ParameterExpression parameterExpression, TreeNodeDynamicContext dynamicContext) { var replaceContext = new DynamicValuesHelperReplaceContext(dynamicContext.CurrentEntityToken, dynamicContext.Piggybag); XElement markup = this.FunctionMarkupDynamicValuesHelper.ReplaceValues(replaceContext); BaseRuntimeTreeNode baseRuntimeTreeNode = FunctionTreeBuilder.Build(markup); LambdaExpression expression = GetLambdaExpression(baseRuntimeTreeNode); if (expression.Parameters.Count != 1) { throw new InvalidOperationException("Only 1 parameter lamdas supported when calling function: " + markup); } ParameterChangerExpressionVisitor expressionVisitor = new ParameterChangerExpressionVisitor(expression.Parameters.Single(), parameterExpression); Expression resultExpression = expressionVisitor.Visit(expression.Body); return(resultExpression); }