private async void OnSelectedGroupUpdate([CanBeNull] GroupEntity selectedGroup) { if (selectedGroup == null) { this.StudentGroups.Clear(); return; } var groupLessons = await _context.GetGroupLessons(selectedGroup).ToListAsync(); this.SelectedStream = _context.Streams .Include(model => model.Discipline) .FirstOrDefault(model => model.Groups.Any(groupModel => groupModel.Id == selectedGroup.Id)); var lessons = (await _context.StudentLessons .Where(lessonModel => this.Student.Id == lessonModel.Student.Id) .ToListAsync()) .Where(lessonModel => groupLessons.Any(model => model.Id == lessonModel.Lesson.Id)) .ToArray(); // to init lazy sequence var studentLessonViewBoxes = lessons .Where(view => view.Lesson.LessonType < LessonType.Attestation) .Select(model => new StudentLessonViewBox(model, this, _context)) .ToList(); this.StudentLessons.Clear(); this.StudentLessons.AddRange(studentLessonViewBoxes); var attestations = 0; var exams = 0; var studentAttestationExamViews = lessons.Where(view => view.Lesson.LessonType == LessonType.Attestation) .Select(model => new StudentAttestationExamView(model, this, ++attestations)) .OrderBy(view => view.StudentLesson.Lesson._Order) .ToList(); this.StudentAttestations.Clear(); this.StudentAttestations.AddRange(studentAttestationExamViews); var attestationExamViews = lessons.Where(view => view.Lesson.LessonType == LessonType.Exam) .Select(model => new StudentAttestationExamView(model, this, ++exams)) .OrderBy(view => view.StudentLesson.Lesson._Order) .ToList(); this.StudentExams.Clear(); this.StudentExams.AddRange(attestationExamViews); this.AddExamButtonConfig.IsEnabled = this.StudentExams.Count < 1; UpdateLessonMark(); UpdateExamMark(); }