Ejemplo n.º 1
0
        static async Task ShowRegistrations_Good(IDac dac)
        {
            // Registrations
            var regs = await dac.GetRegistrations(it => true);

            // Students
            var relatedStudentIdQry = regs.Select(it => it.StudentId).Distinct();
            var students            = await dac.GetStudents(it => relatedStudentIdQry.Contains(it.Id));

            // Subjects
            var relatedSubjectIdQry = regs.Select(it => it.SubjectId).Distinct();
            var subjects            = await dac.GetSubjects(it => relatedSubjectIdQry.Contains(it.Id));

            // Teachers
            var relatedTeacherIdQry = subjects.Select(it => it.TeacherId).Distinct();
            var teachers            = await dac.GetTeachers(it => relatedTeacherIdQry.Contains(it.Id));

            foreach (var reg in regs)
            {
                var student = students.FirstOrDefault(it => it.Id == reg.StudentId);
                var subject = subjects.FirstOrDefault(it => it.Id == reg.SubjectId);
                var teacher = teachers.FirstOrDefault(it => it.Id == subject.TeacherId);
                Console.WriteLine($"{reg.Id:00}|{subject.Name}, {student.Name}, {teacher.Name}, {reg.Semester}, {reg.Grade}");
            }
        }