Ejemplo n.º 1
0
 internal ExpressionAggregateExpressionDefinition(
     Expression <Func <TSource, TResult> > expression,
     ExpressionTranslationOptions translationOptions,
     TranslationContextData contextData)
 {
     _expression         = Ensure.IsNotNull(expression, nameof(expression));
     _translationOptions = translationOptions; // can be null
     _contextData        = contextData;        // can be null
 }
 internal override BsonValue TranslateExpressionToAggregateExpression <TSource, TResult>(
     Expression <Func <TSource, TResult> > expression,
     IBsonSerializer <TSource> sourceSerializer,
     IBsonSerializerRegistry serializerRegistry,
     ExpressionTranslationOptions translationOptions,
     TranslationContextData contextData = null)
 {
     if (contextData != null)
     {
         throw new InvalidOperationException("The LINQ2 provider does not support context data.");
     }
     return(AggregateExpressionTranslator.Translate(expression, sourceSerializer, serializerRegistry, translationOptions));
 }
        internal override BsonValue TranslateExpressionToAggregateExpression <TSource, TResult>(
            Expression <Func <TSource, TResult> > expression,
            IBsonSerializer <TSource> sourceSerializer,
            IBsonSerializerRegistry serializerRegistry,
            ExpressionTranslationOptions translationOptions,
            TranslationContextData contextData = null)
        {
            expression = (Expression <Func <TSource, TResult> >)PartialEvaluator.EvaluatePartially(expression);
            var context       = TranslationContext.Create(expression, sourceSerializer, contextData);
            var translation   = ExpressionToAggregationExpressionTranslator.TranslateLambdaBody(context, expression, sourceSerializer, asRoot: true);
            var simplifiedAst = AstSimplifier.Simplify(translation.Ast);

            return(simplifiedAst.Render());
        }
Ejemplo n.º 4
0
 internal abstract BsonValue TranslateExpressionToAggregateExpression <TSource, TResult>(
     Expression <Func <TSource, TResult> > expression,
     IBsonSerializer <TSource> sourceSerializer,
     IBsonSerializerRegistry serializerRegistry,
     ExpressionTranslationOptions translationOptions,
     TranslationContextData contextData = null);