System.Linq.QueryableTransformer.ReplaceQueryableMethod C# (CSharp) Method

ReplaceQueryableMethod() private method

private ReplaceQueryableMethod ( MethodCallExpression old ) : MethodCallExpression
old System.Linq.Expressions.MethodCallExpression
return System.Linq.Expressions.MethodCallExpression
		MethodCallExpression ReplaceQueryableMethod (MethodCallExpression old)
		{
			Expression target = null;
			if (old.Object != null)
				target = Visit (old.Object);

			var method = ReplaceQueryableMethod (old.Method);
			var parameters = method.GetParameters ();
			var arguments = new Expression [old.Arguments.Count];

			for (int i = 0; i < arguments.Length; i++) {
				arguments [i] = UnquoteIfNeeded (
					Visit (old.Arguments [i]),
					parameters [i].ParameterType);
			}

			return new MethodCallExpression (target, method, arguments.ToReadOnlyCollection ());
		}

Same methods

QueryableTransformer::ReplaceQueryableMethod ( MethodInfo method ) : MethodInfo

Usage Example

        private MethodCallExpression ReplaceQueryableMethod(MethodCallExpression old)
        {
            Expression obj = null;

            if (old.Object != null)
            {
                obj = this.Visit(old.Object);
            }
            MethodInfo methodInfo = QueryableTransformer.ReplaceQueryableMethod(old.Method);

            ParameterInfo[] parameters = methodInfo.GetParameters();
            Expression[]    array      = new Expression[old.Arguments.Count];
            for (int i = 0; i < array.Length; i++)
            {
                array[i] = QueryableTransformer.UnquoteIfNeeded(this.Visit(old.Arguments[i]), parameters[i].ParameterType);
            }
            return(new MethodCallExpression(obj, methodInfo, array.ToReadOnlyCollection <Expression>()));
        }