当子列表的元素包含名称时,我想让LinQ查询过滤列表集合。这里父项的子列表应该满足包含标准,并且那些子列表仅包含在父列表中。
示例:
public class Student
{
int Id;
List<subject> SubjectList;
string Name;
}
public class Subject
{
int Id;
string Name;
}
List<Student> studentList = new List<Student>();
这里我希望LINQ查询只过滤SubjectList的StudentList,主题名称应该包含“maths”,结果必须是带有subjectlist的studentlist,它只包含数学。
答案 0 :(得分:7)
问题出在哪里?
var mathStudents = StudentList.Where(x => x.SubjectList.Any(y => y.Name == "maths"));
返回StudentList
中Subject
SubjectList
Name
maths
中至少有一个var mathCourses = mathStudents.Select(x => new
{
x.Student,
Math = x.SubjectList.Where(y => y.Name == "maths")
});
的所有元素。
如果您只想要每个学生的数学课程,您可以使用它:
foo