【问题标题】:Filter IENumerable of Interface with property of class outside of interface使用接口外部类的属性过滤接口的 IENumerable
【发布时间】:2011-06-01 17:18:07
【问题描述】:

我一直在努力寻找解决此问题的方法。它是从面试考试中提出的问题。我会将此标记为作业,因为我的最后一个问题是这样标记的。

我有这个对象模型:

部门:部门ID、名称

教师:教师 ID、名字、姓氏、出生日期、年薪、部门 ID

课程:CourseId、姓名、TeacherId、DepartmentId

学生:StudentId、FirstName、LastName、DateOfBirth、AverageScore、DepartmentId

部门教师学生课程是一对多的关系。

教师课程是一对多的关系 *学生*与课程

有多对多的关系

在我在这里提出的上一个问题中,我询问了如何在学生和教师之间创建一个名为 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;
                    }

                }
            }

然后我需要创建我使用的 IPeople 的 IENumerable 值

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

我怎么会被下一部分困住。

问题是。 编写方法以获取课程的所有 IPeople - 在 SchoolManager 中编写方法以获取特定课程的所有 IPeople。您的方法应返回 IPeople 的 IENumerable 并利用您刚刚在 SchoolManager 中编写的现有 GetAllIPeople 方法。

现在起初我认为这很容易,应该只使用 .where(c => c.CourseId == cId) 其中 cId 被传递到方法中。为什么 CourseId 不在界面中,因为它不是学生和教师之间的公共属性。我确实知道,因为课程、学生和教师都将共享相同的部门 ID 的对象之间的关系。

然而,我完全不知道如何回答这个问题。如果有人能指出我正确的方向,我将不胜感激。

将 Microsoft Visual Studio 2010 与 MS Entity Framework 4.0 结合使用

【问题讨论】:

    标签: c# linq ienumerable


    【解决方案1】:

    如果您将其视为拥有人的课程,而不是试图从人那里发现课程,您将不会遇到这个问题。所以在元代码中:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-06-11
      • 1970-01-01
      • 2021-06-09
      • 2018-05-08
      • 1970-01-01
      • 2017-04-23
      • 1970-01-01
      相关资源
      最近更新 更多