public async Task <IActionResult> Index(int value, [Bind("SelectedCity")] ExamsViewModel viewModel) { var exams = await _repository.Query <Exam>() .Include(exam => exam.City) .ToListAsync(); List <ExamViewModel> examViewModels = new List <ExamViewModel>(); exams.ForEach(x => examViewModels.Add(ExamMappings.ToViewModel(x))); examViewModels = examViewModels.OrderByDescending(x => x.Date).ToList(); List <string> AcceptancePeriod = await CalculateAcceptancePeriods(examViewModels); var AcceptancePeriods = new List <SelectListItem>(); foreach (var ap in AcceptancePeriod) { AcceptancePeriods.Add(new SelectListItem { Value = AcceptancePeriod.FindIndex(a => a == ap).ToString(), Text = ap }); } viewModel.AcceptancePeriod = AcceptancePeriods; viewModel.ExamViewModels = examViewModels.Where(x => x.SetAcceptancePeriod == AcceptancePeriods.ElementAt(value).Text).ToList(); var SelectedAcceptancePeriod = AcceptancePeriods.ElementAt(value); viewModel.SelectedAcceptancePeriod = SelectedAcceptancePeriod.Text; TempData["SelectedAcceptancePeriod"] = SelectedAcceptancePeriod.Value; var selectedExams = examViewModels.Where(x => x.SetAcceptancePeriod == SelectedAcceptancePeriod.Text).ToList(); var results = await _repository.Query <Result>().ToListAsync(); int studentsCountInAcceptancePeriod = 0; foreach (var selectedExam in selectedExams) { int examId = exams.FirstOrDefault(x => x.Date == selectedExam.Date).Id; studentsCountInAcceptancePeriod += results.Count(x => x.ExamId == examId); } TempData["Count"] = studentsCountInAcceptancePeriod; _logger.LogInformation("Found {Count} records. User {User}.", viewModel.ExamViewModels.Count(), _user); return(View(viewModel)); }