Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在C LINQ中从另一个列表中的列表中获取单个字段_C#_Linq_Nhibernate - Fatal编程技术网

C# 在C LINQ中从另一个列表中的列表中获取单个字段

C# 在C LINQ中从另一个列表中的列表中获取单个字段,c#,linq,nhibernate,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.C

我有一个学校列表,每个学校都有一个课程列表,每个课程都有一位老师。我想得到一份不同学校和不同课程的所有教师的名单

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();
我对此感到厌倦,但它给了我一个错误,尽管它遵守了:在处理客户端结果操作符之后再处理服务器端结果操作符。我们订错了

schools.SelectMany(s => s.Courses).SelectMany(c => c.Teacher)
或者如果你想用学校>教师>课程来构建它

schools.SelectMany(s => s.Teachers)
您还可以在末尾添加.Distinct,以防同一名教师可以有多个课程/学校

或者如果你想用学校>教师>课程来构建它

schools.SelectMany(s => s.Teachers)

您还可以在末尾添加.Distinct,以防同一名教师可以有多个课程/学校。

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


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


如果它来自一个数据库,那么您应该有一个教师表,为什么不直接从表中选择所有项而使这个递归关系复杂化呢?您是对的,它确实有一个教师表。但我在筛选学校列表时有一些标准。好吧,然后倒转逻辑,一所学校会有很多课程,一门课程会有很多老师,但老师会有一门课程,一门课程会有一所学校,所以从教师中选择和检查教师课程和教师课程学校要容易得多。虽然我已经有了下面的答案。。。我不确定我是否完全听懂了。所以你想让我反复查看所有教师的名单并检查某个条件?如果我有3000多名教师,但只有250-300所学校呢?在整个教师名单上循环没有任何意义。如果我有一个学校的子集,比如20-50,那么通过列表的子集循环选择教师不是更好吗?好吧,在你的代码中没有测试,你也没有说会有多少注册,所以我不知道这些事情。但是,无论如何,它应该作为一个左连接转换到DB,查询分析程序会为您优化它,它不应该有什么不同,但无论如何,最好的方法是尝试它。如果它来自一个数据库,您应该有一个teachers表,为什么要使这种递归关系复杂化,而不是直接从表中选择所有项?没错,它确实有一个表。但我在筛选学校列表时有一些标准。好吧,然后倒转逻辑,一所学校会有很多课程,一门课程会有很多老师,但老师会有一门课程,一门课程会有一所学校,所以从教师中选择和检查教师课程和教师课程学校要容易得多。虽然我已经有了下面的答案。。。我不确定我是否完全听懂了。所以你想让我反复查看所有教师的名单并检查某个条件?如果我有3000多名教师,但只有250-300所学校呢?在整个教师名单上循环没有任何意义。如果我有一个学校的子集,比如20-50,那么通过列表的子集循环选择教师不是更好吗?好吧,在你的代码中没有测试,你也没有说会有多少注册,所以我不知道这些事情。但是,无论如何,它应该作为一个左连接转换为DB,查询分析程序将为您优化它,它不应该有什么不同,但无论如何,最好的方法是尝试一下,这很有效。非常感谢。我只是想知道SelectMany方法做了什么哈哈。。。现在我知道了,这起作用了。非常感谢。我只是想知道SelectMany方法做了什么哈哈。。。现在我知道了。