【问题标题】:Filter List collection based on property of child list contains a name基于子列表属性的过滤列表集合包含名称
【发布时间】:2016-11-08 05:38:16
【问题描述】:

当子列表的元素包含名称时,我想让 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,其中的主题名称应该包含“数学”,结果必须是带有 subjectlist 的学生列表,它只包含数学。

【问题讨论】:

  • 您的代码甚至无法编译,因为您没有为您的成员分配任何数据类型。
  • 这里我已经为你的例子放了代码。我想要相同场景的 linq 查询...

标签: c# linq


【解决方案1】:

问题出在哪里?

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

StudentList 返回所有在其SubjectList 中至少有一个SubjectNamemaths 的元素。

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

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

【讨论】:

  • 您好,我试过了。但是这里的主题列表显示所有主题,以防任何一个主题名称满足条件。但我只想要学生列表,其中学科列表名称应该是“数学”。排除学科列表中除“数学”之外的其他学科模型
  • 所以你希望那些学生有数学课程。对于所有那些你只想要每个 SubjectList.property 中的数学课程本身 Student?
  • 嗨,是的。确实需要解决方案。
猜你喜欢
  • 1970-01-01
  • 2021-08-22
  • 1970-01-01
  • 2016-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-18
  • 2017-12-09
相关资源
最近更新 更多