/// <summary> /// Process Queriable /// </summary> /// <param name="queriable"></param> /// <param name="requestModel"></param> /// <param name="isSorting"></param> /// <param name="selector"></param> /// <typeparam name="TInput"></typeparam> /// <exception cref="ArgumentNullException"></exception> public static async Task ProcessQueriable <TInput, TOutput>( this BaseListResultViewModel <TOutput> baseList, IQueryable <TInput> queriable, BaseListRequestViewModel requestModel, bool isSorting, Func <TInput, TOutput> selector) where TOutput : class { if (requestModel == null) { throw new ArgumentNullException(nameof(requestModel)); } if (baseList == null) { throw new ArgumentNullException(nameof(baseList)); } baseList.PageNumber = requestModel.PageNumber; baseList.PageSize = requestModel.PageSize; baseList.Data = (await queriable .ApplyList(requestModel, isSorting) .ToListAsync()) .Select(selector) .ToList(); baseList.CheckAndSetNext(); }
/// <summary> /// Get list result model /// </summary> /// <typeparam name="TInput"></typeparam> /// <typeparam name="TOutput"></typeparam> /// <param name="queriable"></param> /// <param name="requestModel"></param> /// <param name="isSorting"></param> /// <param name="selector"></param> /// <returns></returns> public static async Task <BaseListResultViewModel <TOutput> > ToListModel <TInput, TOutput>( this IQueryable <TInput> queriable, BaseListRequestViewModel requestModel, bool isSorting, Func <TInput, TOutput> selector) where TOutput : class { if (requestModel == null) { throw new ArgumentNullException(nameof(requestModel)); } if (selector == null) { throw new ArgumentNullException(nameof(selector)); } var baseList = new BaseListResultViewModel <TOutput> { PageNumber = requestModel.PageNumber, PageSize = requestModel.PageSize, Data = (await queriable .ApplyList(requestModel, isSorting) .ToListAsync()) .Select(selector) .ToList() }; baseList.CheckAndSetNext(); return(baseList); }
/// <summary> /// Process Queriable /// </summary> /// <param name="queriable"></param> /// <param name="requestModel"></param> /// <param name="selector"></param> /// <typeparam name="TInput"></typeparam> public static async Task ProcessQueriable <TInput, TOutput>( this BaseListResultViewModel <TOutput> baseList, IQueryable <TInput> queriable, BaseListRequestViewModel requestModel, Func <TInput, TOutput> selector) where TOutput : class { await ProcessQueriable(baseList, queriable, requestModel, true, selector); }