C# Linq选择所有类中的所有子类

C# Linq选择所有类中的所有子类,c#,linq,C#,Linq,我有一份班级名单,每个班级都有一份学生名单 我需要获得学生的完整列表,但在student.personid allPeopleUnique= classes.Select(c=> c.Students.Select( persons ??)).Unique(student.PersonId) 有什么想法吗?如果你想让所有学生都在一个有不同价值观的简单列表中(personid): 您要使用: 如果单个唯一学生的学生对象不同,则可以使用。或者您对学生类型实施如下IEqualityComp

我有一份班级名单,每个班级都有一份学生名单

我需要获得学生的完整列表,但在
student.personid

allPeopleUnique=   classes.Select(c=> c.Students.Select( persons ??)).Unique(student.PersonId)

有什么想法吗?

如果你想让所有学生都在一个有不同价值观的简单列表中(personid):

您要使用:

如果单个唯一学生的学生对象不同,则可以使用。或者您对学生类型实施如下
IEqualityComparer

public class StudentEqualityComparer : IEqualityComparer<Student>
{
    public bool Equals(Student a, Student b)
    {
        return a.PersonId == b.PersonId;
    }
    public int GetHashCode(Student s)
    {
        return s.PersonId.GetHashCode(); // or just `return s.PersonId`
    }
}
var allStudents = classes.SelectMany(c => c.Students).Distinct();
public class StudentEqualityComparer : IEqualityComparer<Student>
{
    public bool Equals(Student a, Student b)
    {
        return a.PersonId == b.PersonId;
    }
    public int GetHashCode(Student s)
    {
        return s.PersonId.GetHashCode(); // or just `return s.PersonId`
    }
}
var allStudents = classes.SelectMany(c => c.Students)
                         .Distinct(new StudentEqualityComparer());