public CategoryStatistics CategoryStatistics(int categoryId) { this.categoryId = categoryId; var category = context.Categories.Where(x => x.CategoryId == categoryId); if (category.Count() == 0) { throw new ArgumentException("Category does not exist"); } var userStatistics = GetUserStatisticForCategory(); var catStatistics = new CategoryStatistics(); catStatistics.Category = category.FirstOrDefault(); catStatistics.Top5Winners = userStatistics.OrderByDescending(x => x.Wins).Take(5).ToList(); catStatistics.Top5Loosers = userStatistics.OrderByDescending(x => x.Losses).Take(5).ToList(); catStatistics.NumberOfEventsInCategory = NumberOfEventsInCategory(); catStatistics.NumberOfRaffleParticipantsInCategory = NumberOfRaffleParticipantsInCategory(); catStatistics.NumberOfEventTicketsHandedOut = NumberOfEventTicketsHandedOut(); catStatistics.UniqueNumberOfRaffleParticipantsInCategory = UniqueNumberOfRaffleParticipantsInCategory(); catStatistics.NumberOfEventTicketsNotHandedOut = NumberOfEventTicketsNotHandedOut(); catStatistics.NumberOfTimesEventCreatorHasWonHisOwnRaffle = NumberOfTimesEventCreatorHasWonHisOwnRaffle(); return catStatistics; }