2016-11-08 39 views
-1

当子列表的元素包含名称时,我想要LinQ查询来过滤列表集合。这里的父母子女名单应该符合包含标准,而那些子女名单只包含在父母名单中。基于子列表的属性的LinQ过滤器列表集合包含名称

例子:

Public class Student{ 
    Id, 
    List<subject> SubjectList; 
    Name 
    } 
    public class Subject{ 
    Id 
    Name, 
    } 


    List<student> StudentList= new List<student>(); 

在这里,我想LINQ查询过滤subjectlist,其主题名称应包含“数学”和因此,必须与subjectlist,这是只包含数学来studentlist的唯一StudentList。

+0

即使您不指定任何数据类型给您的成员,您的代码也不会编译。 – HimBromBeere

+0

在这里我已经把你的例子的代码。我想要linq查询相同的scenaria ... –

回答

4

问题在哪里?

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

返回所有在至少一个Subject的从StudentList元素的SubhjectListNamemaths

如果只希望每一个学生的数学课程,你可以使用这个:

var mathCourses = mathStudents.Select(x => new 
{ 
    x.Student, 
    Math = x.SubjectList.Where(x => x.Name == "maths") 
}); 
从性能上看这很烂,你有相同的枚举的多次迭代

不过。

+0

嗨,我已经试过这个。但这里的主题列表显示了任何一个主题名称符合条件的所有主题。但是,我只想要学生名单只有哪个科目列表名称应该是“数学”。排除除“数学”之外的科目列表中的其他科目模型 –

+0

因此,您希望那些学生拥有数学课程。对于所有那些你想在每个学生的'SubjectList'.property中只有数学课程本身? – HimBromBeere

+0

嗨,是的。确切需要它的解决方案。 –

相关问题