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()); }
internal abstract BsonValue TranslateExpressionToAggregateExpression <TSource, TResult>( Expression <Func <TSource, TResult> > expression, IBsonSerializer <TSource> sourceSerializer, IBsonSerializerRegistry serializerRegistry, ExpressionTranslationOptions translationOptions, TranslationContextData contextData = null);