1
我有一個類的List,每個班有學生的列表中選擇所有兒童。LINQ到所有類
我需要得到學生的完整列表,但在student.personid
allPeopleUnique= classes.Select(c=> c.Students.Select(persons ??)).Unique(student.PersonId)
任何想法獨特之處?
我有一個類的List,每個班有學生的列表中選擇所有兒童。LINQ到所有類
我需要得到學生的完整列表,但在student.personid
allPeopleUnique= classes.Select(c=> c.Students.Select(persons ??)).Unique(student.PersonId)
任何想法獨特之處?
你想用SelectMany:
var allStudents = classes.SelectMany(c => c.Students).Distinct();
如果學生對一個唯一的對象學生不一樣,可以使用DistinctBy
recipe from this question。或者你實現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(new StudentEqualityComparer());
如果希望所有的學生 - 在不同值的簡單列表(PERSONID):
allPeopleUnique = classes.SelectMany(c=> c.Students)
.GroupBy(p => p.personid)
.Select(g => g.First())