如果这是重复的,我很抱歉;我已经完成了我的搜索,但我已经弄清楚要搜索什么。
假设您有一个学生数据库,并且您想根据性别平均他们的分数。对于您的标准问题关系数据库,这非常简单。它可能需要一个带有显式连接的查询,或者您可能只使用导航属性或其他东西,但它看起来有点像这样:
var averageScore = db.Grades
.Where(grade => grade.Student.Gender == selectedGender)
.Average();
但是,如果您连接到基于文档的系统,而您的数据结构只是一个 Student 对象,其中嵌入了一组 Grade 对象,该怎么办?
var averageScore = db.Students.GroupBy(student => student.Gender)
.ThisDoesNotWork(no => matter.What);
我已经尝试了三打不同的方法来做一个 GroupBy,它设法将值集合转换为共享一个公共键的单个值集合,但它们都没有奏效。我的大部分尝试都涉及在 GroupBy 中尝试 SelectMany,并且——如果可能的话——让我们说编译器不喜欢我的床边方式。
编辑:不确定“格式”是什么意思。我们正在谈论的数据结构只是一个以集合作为其成员之一的类。
class Student
{
public string Name { get; set; }
public Gender Gender { get; set; }
public ICollection<int> Grades { get; set; }
}