我有一个学校数据库,我写了一个查询,以获得只有5分和4分的学生(美国的A和B)。这是:
var selectGoodStudents = from student in context.Gradebook
group student by student.Student_Id into studentsGroup
where studentsGroup.All(x => x.Mark == 4 || x.Mark == 5)
let goodStudent = studentsGroup.FirstOrDefault()
select new
{
Name = goodStudent.Student.Name,
Surname = goodStudent.Student.Surname,
MiddleName = goodStudent.Student.Middle_Name,
ClassNumber = goodStudent.Student.Class.Number,
ClassLetter = goodStudent.Student.Class.Letter
};
它运作良好,但我不明白一件事。如果 where 语句从 studentsGroup.All(x => x.Mark == 4 || x.Mark == 5)获得 true ,我建议), studentsGroup 将被添加到查询结果中。如果错误 - 不是。我的查询符合这个建议。 但是,如果我在where语句中写一个显式构造,就像这样
where studentsGroup.All(x => x.Mark == 4 || x.Mark == 5) == true
查询将从表中获取所有组。如果我写 == false ,查询将无法获得任何内容。我不明白这非常非常。