C# MVC在儿童身上的情况(有许多)

C# MVC在儿童身上的情况(有许多),c#,asp.net-mvc,linq,entity-framework,C#,Asp.net Mvc,Linq,Entity Framework,我想在对象的子对象上做一个where。例如: 模范班有孩子,我想要一个只有汉克孩子的班 Model Schoolclass int ID string Classname virtual ICollection<Children> Children Model Child int ID int ClassID string FirstName string LastName this.db.Schoolclass.Where

我想在对象的子对象上做一个where。例如:

模范班有孩子,我想要一个只有汉克孩子的班

Model Schoolclass
    int ID
    string Classname
    virtual ICollection<Children> Children

Model Child
    int ID
    int ClassID
    string FirstName
    string LastName

this.db.Schoolclass.Where(sc =>
    sc.ID == 4 &&
    sc.Children.FirstName == "Hank"
).FirstOrDefault();
我想你想要这个:

this.db.Schoolclass.Where(sc =>
    sc.ID == 4 &&
    sc.Children.Any(x=>x.FirstName == "Hank")
).FirstOrDefault();
或更简单:

this.db.Schoolclass.FirstOrDefault(sc => sc.ID == 4 &&
                       sc.Children.Any(x=>x.FirstName == "Hank"));
“我想要一个所有孩子都叫汉克的班级”:

this.db.Schoolclass.FirstOrDefault(sc=>sc.Children.All(c=>c.FirstName==“Hank”)

真的吗?当然要得到所有财产相等的孩子。。您应该删除
sc.ID==4&
部分。。因为这个表达的这一方面本身是非常有限的,我想,如果有一个叫汉克的孩子,当没有一个叫汉克的孩子的时候,我会和他所有的孩子一起上学校null@SimonWhitehead你真的明白OP想要什么吗?表达式没有任何错误,第一个
sc.ID==4
选择学校,第二个
sc.Children。Any
将检查该学校是否有名为
Hank
的孩子。如果您删除第一个条件,它将搜索所有学校,并返回满足第二个条件的第一个学校。@KevinvanHoorn从您的评论中,上面的代码应该返回您想要的课堂。我认为如果所有孩子都叫hank,这将得到课堂,否则返回Null好的,如果我现在看到我的问题,也许我问错了,问题被改写了,现在它说:只有孩子们叫“Hank”
All
意味着班上所有的孩子都应该叫“Hank”。我无法想象现实中任何一个班级的所有孩子/学生都有相同的名字。它可能永远不会发生。为什么要在表达式中包含
sc.ID==4
条件?ID为4的
班级
是否有任何孩子?是的,该班级有20个孩子,2个名为“Hank”,我希望该班级有两个孩子
this.db.Schoolclass.FirstOrDefault(sc => sc.ID == 4 &&
                       sc.Children.Any(x=>x.FirstName == "Hank"));