从C#LINQ中另一个List的List中获取单个字段

时间:2016-05-12 22:41:11

标签: c# linq nhibernate

我有一个学校清单,每个学校都包含一系列课程,每个课程都包含一名教师。我希望获得不同学校和不同课程的所有教师名单。

public School()
{
   public List<Course> Courses; 
}

public Course()
{
   public Teacher Teacher;
}

var schools = new List<School>();

var allTeachers = schools.select(s => s.Courses.select(t => t.Teacher)).ToList();

我厌倦了,但它给了我一个错误(但它遵守了):处理服务器端结果运算符后做客户端的运算符。我们订购错了......

2 个答案:

答案 0 :(得分:2)

schools.SelectMany(s => s.Courses).SelectMany(c => c.Teacher)

或者如果你想用学校&gt;教师&gt;课程...

来构建它
schools.SelectMany(s => s.Teachers)

如果同一位教师可以有多个课程/学校,您也可以在最后添加.Distinct()。

答案 1 :(得分:1)

您可以使用此LINQ查询来提取所有Teacher个对象:

        var allTeachers = from school in schools
                          from course in school.Courses
                          select course.Teacher;