Пример #1
0
        internal IQueryable <TResult> To <TResult>(IObjectDictionary parameters, MemberPaths memberPathsToExpand)
        {
            var membersToExpand = memberPathsToExpand.SelectMany(m => m).Distinct().ToArray();

            var mapExpressions = _builder.GetMapExpression(_source.ElementType, typeof(TResult), parameters, membersToExpand);

            return((IQueryable <TResult>)mapExpressions.Aggregate(_source, (source, lambda) => Select(source, lambda)));
        }
        public IQueryable <TResult> To <TResult>(IObjectDictionary parameters, MemberPaths memberPathsToExpand)
        {
            var membersToExpand = memberPathsToExpand.SelectMany(m => m).Distinct().ToArray();

            parameters = parameters ?? new Dictionary <string, object>();
            var mapExpressions = _builder.GetMapExpression(_source.ElementType, typeof(TResult), parameters, membersToExpand);

            return((IQueryable <TResult>)mapExpressions.Aggregate(_source, Select));
        }
Пример #3
0
 private IQueryable ToCore(
     Type destinationType,
     object parameters,
     MemberPaths memberPathsToExpand
     ) =>
 _builder
 .GetProjection(
     _source.ElementType,
     destinationType,
     parameters,
     memberPathsToExpand.Select(m => new MemberPath(m)).ToArray()
     )
 .Chain(_source, Select);
Пример #4
0
        private IQueryable <TResult> To <TResult>(IObjectDictionary parameters, MemberPaths memberPathsToExpand)
        {
            var membersToExpand = memberPathsToExpand.SelectMany(m => m).Distinct().ToArray();

            var mapExpression = _builder.CreateMapExpression(_source.ElementType, typeof(TResult), parameters, membersToExpand);

            return(_source.Provider.CreateQuery <TResult>(
                       Expression.Call(
                           null,
                           QueryableSelectMethod.MakeGenericMethod(_source.ElementType, typeof(TResult)),
                           new[] { _source.Expression, Expression.Quote(mapExpression) }
                           )
                       ));
        }
 public SourceInjectedQueryProvider(IMapper mapper,
                                    IQueryable <TSource> dataSource, IQueryable <TDestination> destQuery,
                                    IEnumerable <ExpressionVisitor> beforeVisitors,
                                    IEnumerable <ExpressionVisitor> afterVisitors,
                                    Action <Exception> exceptionHandler,
                                    IDictionary <string, object> parameters,
                                    MemberPaths membersToExpand)
 {
     _mapper           = mapper;
     _dataSource       = dataSource;
     _destQuery        = destQuery;
     _beforeVisitors   = beforeVisitors;
     _afterVisitors    = afterVisitors;
     _parameters       = parameters ?? new Dictionary <string, object>();
     _membersToExpand  = membersToExpand ?? Enumerable.Empty <IEnumerable <MemberInfo> >();
     _exceptionHandler = exceptionHandler ?? (x => { });
 }
Пример #6
0
 public SourceSourceInjectedQuery(IQueryable <TSource> dataSource,
                                  IQueryable <TDestination> destQuery,
                                  IMapper mapper,
                                  IEnumerable <ExpressionVisitor> beforeVisitors,
                                  IEnumerable <ExpressionVisitor> afterVisitors,
                                  Action <Exception> exceptionHandler,
                                  IObjectDictionary parameters,
                                  MemberPaths membersToExpand,
                                  SourceInjectedQueryInspector inspector)
 {
     Parameters         = parameters;
     EnumerationHandler = (x => { });
     Expression         = destQuery.Expression;
     ElementType        = typeof(TDestination);
     Provider           = new SourceInjectedQueryProvider <TSource, TDestination>(mapper, dataSource, destQuery, beforeVisitors, afterVisitors, exceptionHandler, parameters, membersToExpand)
     {
         Inspector = inspector ?? new SourceInjectedQueryInspector(),
     };
     _exceptionHandler = exceptionHandler ?? ((x) => { });
 }
Пример #7
0
        private IQueryable <TResult> ToCore <TResult>(object parameters, MemberPaths memberPathsToExpand)
        {
            var members = memberPathsToExpand.SelectMany(m => m).Distinct().ToArray();

            return((IQueryable <TResult>)_builder.GetMapExpression(_source.ElementType, typeof(TResult), parameters, members).Aggregate(_source, Select));
        }
 public ISourceInjectedQueryable <TDestination> For <TDestination>(IObjectDictionary parameters, params string[] membersToExpand)
 {
     _parameters      = parameters;
     _membersToExpand = ReflectionExtensions.GetMemberPaths(typeof(TDestination), membersToExpand);
     return(CreateQueryable <TDestination>());
 }
 public ISourceInjectedQueryable <TDestination> For <TDestination>(params Expression <Func <TDestination, object> >[] membersToExpand)
 {
     _membersToExpand = ReflectionExtensions.GetMemberPaths(membersToExpand);
     return(CreateQueryable <TDestination>());
 }
 public ISourceInjectedQueryable <TDestination> For <TDestination>(object parameters, params Expression <Func <TDestination, object> >[] membersToExpand)
 {
     _parameters      = GetParameters(parameters);
     _membersToExpand = GetMemberPaths(membersToExpand);
     return(CreateQueryable <TDestination>());
 }
Пример #11
0
        private IQueryable ToCore(Type destinationType, object parameters, MemberPaths memberPathsToExpand)
        {
            var members = memberPathsToExpand.SelectMany(m => m).Distinct().ToArray();

            return(_builder.GetMapExpression(_source.ElementType, destinationType, parameters, members).Aggregate(_source, Select));
        }
Пример #12
0
 private IQueryable <TResult> ToCore <TResult>(object parameters, MemberPaths memberPathsToExpand) =>
 (IQueryable <TResult>)ToCore(typeof(TResult), parameters, memberPathsToExpand);