private static DataSourceResult GetUngroupedDataSourceResult <TModel, TData>(this DataSourceRequest request, IQueryable <TData> query, IMapper mapper, bool getAggregates, ICollection <Expression <Func <IQueryable <TModel>, IIncludableQueryable <TModel, object> > > > includeProperties = null) where TModel : BaseModel where TData : BaseData { Expression <Func <IQueryable <TModel>, AggregateFunctionsGroup> > aggregatesExp = getAggregates ? QueryableExtensionsEx.CreateAggregatesExpression <TModel>(request) : null; Expression <Func <IQueryable <TModel>, int> > totalExp = QueryableExtensionsEx.CreateTotalExpression <TModel>(request); Expression <Func <IQueryable <TModel>, IEnumerable <TModel> > > ungroupedExp = QueryableExtensionsEx.CreateUngroupedDataExpression <TModel>(request); return(new DataSourceResult { Data = query.Query <TModel, TData, IEnumerable <TModel>, IEnumerable <TData> >(mapper, ungroupedExp, includeProperties), AggregateResults = getAggregates ? query.Query <TModel, TData, AggregateFunctionsGroup, AggregateFunctionsGroup, AggregateFunctionsGroupModel <TModel> >(mapper, aggregatesExp, includeProperties) ?.GetAggregateResults(request.Aggregates.SelectMany(a => a.Aggregates)) : null, Total = query.Query <TModel, TData, int, int>(mapper, totalExp, includeProperties) }); }
private static async Task <DataSourceResult> GetUngroupedDataSourceResult <TModel, TData>(this DataSourceRequest request, IContextRepository contextRepository, bool getAggregates, ICollection <Expression <Func <IQueryable <TModel>, IIncludableQueryable <TModel, object> > > > includeProperties = null) where TModel : BaseModel where TData : BaseData { Expression <Func <IQueryable <TModel>, AggregateFunctionsGroup> > aggregatesExp = getAggregates ? QueryableExtensionsEx.CreateAggregatesExpression <TModel>(request) : null; Expression <Func <IQueryable <TModel>, int> > totalExp = QueryableExtensionsEx.CreateTotalExpression <TModel>(request); Expression <Func <IQueryable <TModel>, IEnumerable <TModel> > > ungroupedExp = QueryableExtensionsEx.CreateUngroupedDataExpression <TModel>(request); return(new DataSourceResult { Data = await contextRepository.QueryAsync <TModel, TData, IEnumerable <TModel>, IEnumerable <TData> >(ungroupedExp, includeProperties), AggregateResults = getAggregates ? (await contextRepository.QueryAsync <TModel, TData, AggregateFunctionsGroup, AggregateFunctionsGroup, AggregateFunctionsGroupModel <TModel> >(aggregatesExp, includeProperties)) ?.GetAggregateResults(request.Aggregates.SelectMany(a => a.Aggregates)) : null, Total = await contextRepository.QueryAsync <TModel, TData, int, int>(totalExp, includeProperties) }); }