private Expression GetPredicate(MethodCallExpression methodCallExpression, GroupByShaperExpression groupByShaperExpression)
        {
            if (methodCallExpression.Arguments.Count == 1)
            {
                return(null);
            }

            if (methodCallExpression.Arguments.Count == 2)
            {
                var selectorLambda = methodCallExpression.Arguments[1].UnwrapLambdaFromQuote();
                return(ReplacingExpressionVisitor.Replace(
                           selectorLambda.Parameters[0],
                           groupByShaperExpression.ElementSelector,
                           selectorLambda.Body));
            }

            throw new InvalidOperationException(CoreStrings.TranslationFailed(methodCallExpression.Print()));
        }
Ejemplo n.º 2
0
        private Expression GetSelector(MethodCallExpression methodCallExpression, GroupByShaperExpression groupByShaperExpression)
        {
            if (methodCallExpression.Arguments.Count == 1)
            {
                return(groupByShaperExpression.ElementSelector);
            }

            if (methodCallExpression.Arguments.Count == 2)
            {
                var selectorLambda = methodCallExpression.Arguments[1].UnwrapLambdaFromQuote();
                return(ReplacingExpressionVisitor.Replace(
                           selectorLambda.Parameters[0],
                           groupByShaperExpression.ElementSelector,
                           selectorLambda.Body));
            }

            throw new InvalidOperationException();
        }