public async Task <ListResponse <DTOs.GridElment> > GetRecordsByCategory(string userId, string categoryId, int skip, int take) { string ownerId = currentAuthenticationContext.CurrentUser; List <DTOs.GridElment> gridElements = new List <DTOs.GridElment>(); List <Mdls.Milestone> milestones = await milestoneRepository.GetByCategory(userId, categoryId, skip, take); long count = await milestoneRepository.GetTotalByCategory(userId, categoryId); List <Task <DTOs.GridElment> > gdelments = new List <Task <DTOs.GridElment> >(); foreach (Mdls.Milestone milestone in milestones) { gdelments.Add(ResolveGridElement(milestone, ownerId)); } while (gdelments.Count > 0) { Task <DTOs.GridElment> finishTask = await Task.WhenAny(gdelments.ToArray()); gdelments.Remove(finishTask); gridElements.Add(finishTask.Result); } return(new ListResponse <DTOs.GridElment> { Count = count, Result = gridElements.OrderByDescending(k => k.Milestone.CreatedDate).ToList <DTOs.GridElment>() }); }