Exemple #1
0
        public static MethodCallExpression WrapInAverageSum(this MethodCallExpression node, MethodCallExpression wrap)
        {
            Check.NotNull(node, nameof(node));
            Check.NotNull(wrap, nameof(wrap));

            Type       selectorType  = wrap.GetSelectorType();
            Type       queryableType = typeof(IQueryable <>).MakeGenericType(selectorType);
            MethodInfo numberMethod  = typeof(Queryable).GetMethod(wrap.Method.Name, new [] { queryableType });

            return(Expression.Call(numberMethod, node));
        }
Exemple #2
0
        public static MethodCallExpression WrapInSelect(this MethodCallExpression node, MethodCallExpression selectorNode)
        {
            Check.NotNull(node, nameof(node));

            Type selectorType = selectorNode.GetSelectorType();

            Type[] genericArgumentTypes = node.Method
                                          .GetGenericArguments()
                                          .Append(selectorType)
                                          .ToArray();

            return(Expression.Call(typeof(Queryable), nameof(Queryable.Select), genericArgumentTypes, node, selectorNode.Arguments[1]));
        }