我想通过一个表达式过滤学校的后代。这可能吗?我只想要年龄为“12”的学生
伪代码
context.Schools.Where(s => s.Name = "Springfield Elementary").Where(s =>
s.Pupils.Age == 12).Select(s);
基本上我想要一个学校集合,其中包含一个与我的表达相匹配的学生集合
谢谢!
答案 0 :(得分:1)
context.Schools.Where(s => s.Name == "Springfield Elementary" && s.Pupils.Age == 12);
它不应该是.Select(s)
学校的必需品,因为那就是你所要求的。
这将返回学生年龄为12岁的学校。 但如果你想选择学生,你需要:
context.Schools
.Where(s => s.Name == "Springfield Elementary" && s.Pupils.Age == 12)
.Select(s=>s.Pupils);
或者正如通过查询学生的评论建议
context.Pupils.Where(s => s.Age == 12 && s.School.Name == "Springfield Elementary");
这假设Schools / Pupil看起来像这样(代码优先的POCO):
public class School
{
public int SchoolId { get; set; }
public string Name { get; set; }
public virtual ICollection<Pupil> Pupils { get; set; }
}
public class Pupil
{
public int PupilId { get; set; }
public int Age { get; set; }
public int SchoolId { get; set; }
public virtual School School { get; set; }
}