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)); }
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);
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 => { }); }
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) => { }); }
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>()); }
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)); }
private IQueryable <TResult> ToCore <TResult>(object parameters, MemberPaths memberPathsToExpand) => (IQueryable <TResult>)ToCore(typeof(TResult), parameters, memberPathsToExpand);