System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.GetLambdaExpression C# (CSharp) Method

GetLambdaExpression() private method

private GetLambdaExpression ( Expression argument ) : Expression
argument System.Linq.Expressions.Expression
return System.Linq.Expressions.Expression
        private Expression GetLambdaExpression(Expression argument)
        {
            if (ExpressionType.Lambda
                == argument.NodeType)
            {
                return argument;
            }
            else if (ExpressionType.Quote
                     == argument.NodeType)
            {
                return GetLambdaExpression(((UnaryExpression)argument).Operand);
            }
            else if (ExpressionType.Call 
                     == argument.NodeType)
            {
                if (typeof(Expression).IsAssignableFrom(argument.Type))
                {
                    var expressionMethod = Expression.Lambda<Func<Expression>>(argument).Compile();

                    return GetLambdaExpression(
                        expressionMethod.Invoke());
                }
            } 
            else if (ExpressionType.Invoke
                     == argument.NodeType)
            {
                if (typeof(Expression).IsAssignableFrom(argument.Type))
                {
                    var expressionMethod = Expression.Lambda<Func<Expression>>(argument).Compile();

                    return GetLambdaExpression(
                        expressionMethod.Invoke());
                }
            }

            throw new InvalidOperationException(
                Strings.ADP_InternalProviderError((int)EntityUtil.InternalErrorCode.UnexpectedLinqLambdaExpressionFormat));
        }

Same methods

ExpressionConverter::GetLambdaExpression ( MethodCallExpression callExpression, int argumentOrdinal ) : LambdaExpression