基于子列表属性的筛选列表集合包含一个名称

本文关键字:列表 包含一 集合 属性 筛选 | 更新日期: 2023-09-27 18:16:49

我想有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查询只过滤StudentList的SubjectList,其中科目名称应该包含"数学",结果必须是StudentList与SubjectList,其中只包含数学

基于子列表属性的筛选列表集合包含一个名称

问题在哪里?

var mathStudents = StudentList.Where(x => x.SubjectList.Any(y => y.Name == "maths"));

返回StudentListSubjectList中至少有一个SubjectNamemaths的所有元素。

如果你只需要每个学生的数学课程,你可以使用:

var mathCourses = mathStudents.Select(x => new 
{ 
    x.Student, 
    Math = x.SubjectList.Where(y => y.Name == "maths") 
});