예제 #1
0
        protected override ShapedQueryExpression TranslateSum(ShapedQueryExpression source, LambdaExpression selector, Type resultType)
        {
            var selectExpression = (SelectExpression)source.QueryExpression;

            selectExpression.PrepareForAggregate();
            var newSelector = selector == null ||
                              selector.Body == selector.Parameters[0]
                ? selectExpression.GetMappedProjection(new ProjectionMember())
                : ReplacingExpressionVisitor.Replace(selector.Parameters.Single(), source.ShaperExpression, selector.Body);

            var projection = _sqlTranslator.TranslateSum(newSelector);

            return(AggregateResultShaper(source, projection, throwOnNullResult: false, resultType));
        }
예제 #2
0
        protected override ShapedQueryExpression TranslateSum(ShapedQueryExpression source, LambdaExpression selector, Type resultType)
        {
            var selectExpression = (SelectExpression)source.QueryExpression;

            selectExpression.PrepareForAggregate();
            var newSelector = selector == null ||
                              selector.Body == selector.Parameters[0]
                    ? selectExpression.GetMappedProjection(new ProjectionMember())
                    : RemapLambdaBody(source, selector);

            var projection = _sqlTranslator.TranslateSum(newSelector);

            return(projection != null
                ? AggregateResultShaper(source, projection, throwOnNullResult : false, resultType)
                : null);
        }