private async Task <BaseViewModel <PagingResult <BrandViewModel> > > GetAll(BasePagingRequestViewModel request, string defaultCondition = null) { var pageSize = request.PageSize; var pageIndex = request.PageIndex; var result = new BaseViewModel <PagingResult <BrandViewModel> >(); string filter = SearchHelper <Brand> .GenerateStringExpression(request.Filter, defaultCondition); Expression <Func <Brand, bool> > FilterExpression = await LinqHelper <Brand> .StringToExpression(filter); var includeList = IncludeLinqHelper <Brand> .StringToListInclude(request?.Include); QueryArgs <Brand> queryArgs = new QueryArgs <Brand> { Offset = pageSize * (pageIndex - 1), Limit = pageSize, Filter = FilterExpression, Sort = request.SortBy, Include = includeList }; var data = _repository.Get(queryArgs.Filter, queryArgs.Sort, queryArgs.Offset, queryArgs.Limit, queryArgs.Include).ToList(); //var sql = data.ToSql(); if (data == null || data.Count == 0) { result.Description = MessageHandler.CustomMessage(MessageConstants.NO_RECORD); result.Code = MessageConstants.NO_RECORD; } else { var pageSizeReturn = pageSize; if (data.Count < pageSize) { pageSizeReturn = data.Count; } result.Data = new PagingResult <BrandViewModel> { Results = _mapper.Map <IEnumerable <BrandViewModel> >(data), PageIndex = pageIndex, PageSize = pageSizeReturn, TotalRecords = _repository.Count(queryArgs.Filter) }; } foreach (var item in result?.Data?.Results) { var listStore = _storeRepository.GetMany(_ => _.BrandId == item.Id).ToList(); var sumRating = listStore.Sum(_ => _.Rating); var sumNumberOfRating = listStore.Sum(_ => _.NumberOfRating); item.Location = listStore.Count; item.Rating = sumRating * 1.0 / sumNumberOfRating * 1.0; } return(result); }