基于子列表属性的筛选列表集合包含一个名称
本文关键字:列表 包含一 集合 属性 筛选 | 更新日期: 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"));
返回StudentList
中SubjectList
中至少有一个Subject
且Name
为maths
的所有元素。
如果你只需要每个学生的数学课程,你可以使用:
var mathCourses = mathStudents.Select(x => new
{
x.Student,
Math = x.SubjectList.Where(y => y.Name == "maths")
});