Example #1
0
        public static LambdaExpression MakeLambda(Expression expression, TranslatorContext context)
        {
            var tupleParameter      = Expression.Parameter(typeof(Tuple), "tuple");
            var visitor             = new ExpressionMaterializer(tupleParameter, context, null, EnumerableUtils <Parameter <Tuple> > .Empty);
            var processedExpression = OwnerRemover.RemoveOwner(expression);

            return(FastExpression.Lambda(visitor.Visit(processedExpression), tupleParameter));
        }
Example #2
0
        public static MaterializationInfo MakeMaterialization(ItemProjectorExpression projector, TranslatorContext context,
                                                              IEnumerable <Parameter <Tuple> > tupleParameters)
        {
            var tupleParameter = Expression.Parameter(typeof(Tuple), "tuple");
            var materializationContextParameter = Expression.Parameter(typeof(ItemMaterializationContext), "mc");
            var visitor = new ExpressionMaterializer(tupleParameter, context, materializationContextParameter, tupleParameters);
            var lambda  = FastExpression.Lambda(visitor.Visit(projector.Item), tupleParameter, materializationContextParameter);
            var count   = visitor.entityRegistry.Count;

            return(new MaterializationInfo(count, lambda));
        }