private Expression GetResultExpression(Expression selectExpression, bool sourceIsQueryable, bool targetIsQueryable) { if (sourceIsQueryable && targetIsQueryable) { return(selectExpression); } if (!sourceIsQueryable && targetIsQueryable) { return(Expression.Call( MethodFinder.GetAsQueryable(TargetValueType.GetQueryableItemType()), selectExpression)); } var toResultMethod = this.TargetValueType.IsArray ? MethodFinder.GetEnumerableToArray <TTargetValueItem>() : MethodFinder.GetEnumerableToList <TTargetValueItem>(); return(Expression.Call(toResultMethod, selectExpression)); }