public Expression GetSelectExpression(ParameterExpression itemPram) { var visitedNavigationExpr = (LambdaExpression) new ParameterReplacerVisitor(_navigationExpression.Parameters[0], itemPram).Visit(_navigationExpression); LambdaExpression memberInitLambda = SubUtilities.GetMemberInitLambda(_engineSubContext.Fields); return(visitedNavigationExpr.Chain(memberInitLambda).Body); }
public Type FieldType => typeof(IEnumerable); // TODO maybe just object ? public Expression GetSelectExpression(ParameterExpression itemPram) { var visitedNavigationExpr = (LambdaExpression) new ParameterReplacerVisitor(_navigationExpression.Parameters[0], itemPram).Visit( _navigationExpression); LambdaExpression memberInitLambda = SubUtilities.GetMemberInitLambda(_engineSubContext.Fields); Type dynamicType = memberInitLambda.ReturnType; MethodCallExpression selectMethodExpr = Expression.Call(typeof(Enumerable), "Select", new[] { typeof(TNav), dynamicType }, visitedNavigationExpr.Body, memberInitLambda); return(selectMethodExpr); }