Фильтр IENumerable интерфейса со свойством класса вне интерфейса - PullRequest
0 голосов
/ 01 июня 2011

Я застрял, пытаясь найти решение этой проблемы.Это вопрос, взятый из экзамена на собеседование.Я отмечу это как домашнее задание, так как мой последний вопрос был помечен для меня таким образом.

У меня есть эта объектная модель:

Department : DepartmentId, Name

Teacher : TeacherId, FirstName, LastName, DateOfBirth, AnnualSalary, DepartmentId

Курс : CourseId, Имя, TeacherId, DepartmentId

Student : StudentId, FirstName, LastName, DateOfBirth, AverageScore, DepartmentId

Кафедра имеет отношение 1 ко многим с Teacher , Student и Курс .

Учитель имеет отношения 1 ко многим с Курс * Ученик * имеет многоко многим отношениям с курсом

В предыдущем вопросе, который я задал здесь, я спросил, как создать интерфейс между учеником и учителем под названием IPeople, чтобы подчеркнуть всю общность.Я был направлен в правильном направлении и придумал

            using System;
            using System.Collections.Generic;
            using System.Linq;
            using System.Text;

            namespace School.Code
            {
                public interface IPeople
                {
                    string FirstName
                    {
                        get;
                        set;
                    }
                    string LastName
                    {
                        get;
                        set;
                    }
                    Int64 DepartmentId
                    {
                        get;
                        set;
                    }
                    DateTime DateOfBirth
                    {
                        get;
                    }

                }
            }

Затем мне нужно было создать IENumerable значение IPeople, которое я сделал, используя

           public IEnumerable<IPeople> GetAllIPeople()
            {
                foreach (IPeople person in GetAllTeachers())
                {
                    yield return person;
                }
                foreach (IPeople person in GetAllStudents())
                {
                    yield return person;
                }
            }

Как бы я ни застрял сследующая часть этого.

Вопрос в том. Напишите метод, чтобы получить всех IPeople для курса - Напишите метод в SchoolManager, чтобы получить всех IPeople для определенного курса.Ваш метод должен возвращать IENumerable из IPeople и использовать существующий метод GetAllIPeople, который вы только что написали в SchoolManager.

Сначала я подумал, что это будет легко, и его следует просто использовать .where (c =>c.CourseId == cId) где cId был передан в метод.Как бы то ни было, CourseId в интерфейсе не является общим свойством ученика и учителя.Я знаю из-за отношений между объектами, что Курс, Студент и Учитель будут иметь один и тот же DepartmentID.

Я, однако, совершенно растерялся относительно того, как я даю ответ на этот вопрос.Если кто-то может указать мне правильное направление, я был бы признателен.

Использование Microsoft Visual Studio 2010 с MS Entity Framework 4.0

1 Ответ

1 голос
/ 01 июня 2011

Если вы думаете об этом как о Курсе, в котором есть люди, а не как о том, чтобы открывать курсы от людей, вы не столкнетесь с этой проблемой.Так в метакоде:

Course course=....
foreach(IPeople person in course.Students) //or whatever
...