internal override RenderedProjectionDefinition <TProjection> TranslateExpressionToFindProjection <TSource, TProjection>( Expression <Func <TSource, TProjection> > expression, IBsonSerializer <TSource> sourceSerializer, IBsonSerializerRegistry serializerRegistry) { return(FindProjectionTranslator.Translate <TSource, TProjection>(expression, sourceSerializer, serializerRegistry)); }
/// <summary> /// Projections the specified source. /// </summary> /// <typeparam name="TDocument">The type of the document.</typeparam> /// <typeparam name="TResult">The type of the result.</typeparam> /// <typeparam name="TNewResult">The type of the new result.</typeparam> /// <param name="source">The source.</param> /// <param name="projection">The projection.</param> /// <returns>The fluent find interface.</returns> public static IFindFluent <TDocument, TNewResult> Projection <TDocument, TResult, TNewResult>(this IFindFluent <TDocument, TResult> source, Expression <Func <TDocument, TNewResult> > projection) { Ensure.IsNotNull(source, "source"); Ensure.IsNotNull(projection, "projection"); var parameterSerializer = source.Collection.Settings.SerializerRegistry.GetSerializer <TDocument>(); var projectionInfo = FindProjectionTranslator.Translate <TDocument, TNewResult>(projection, parameterSerializer); return(source.Projection <TNewResult>(projectionInfo.Projection, projectionInfo.Serializer)); }
private ProjectedResult <T> Project <T>(Expression <Func <Root, T> > projector, string json) { var serializer = BsonSerializer.SerializerRegistry.GetSerializer <Root>(); var projectionInfo = FindProjectionTranslator.Translate <Root, T>(projector, serializer); using (var reader = new JsonReader(json)) { var context = BsonDeserializationContext.CreateRoot(reader); return(new ProjectedResult <T> { Projection = projectionInfo.Document, Value = projectionInfo.ProjectionSerializer.Deserialize(context) }); } }
/// <inheritdoc /> public override RenderedProjectionDefinition <TProjection> Render(IBsonSerializer <TSource> sourceSerializer, IBsonSerializerRegistry serializerRegistry) { return(FindProjectionTranslator.Translate <TSource, TProjection>(_expression, sourceSerializer)); }