これが重複している場合は、お詫び申し上げます。私は検索の分担をしましたが、何を検索するかを考え出しました。
学生データベースがあり、性別に基づいてスコアを平均したいとします。標準的な課題リレーショナル データベースでは、これは非常に簡単です。明示的な結合を伴うクエリが必要な場合や、ナビゲーション プロパティなどを使用する場合もありますが、次のようになります。
var averageScore = db.Grades
.Where(grade => grade.Student.Gender == selectedGender)
.Average();
しかし、ドキュメント ベースのシステムに接続していて、データ構造が、Grade オブジェクトのコレクションが埋め込まれた単なる Student オブジェクトである場合はどうでしょうか。
var averageScore = db.Students.GroupBy(student => student.Gender)
.ThisDoesNotWork(no => matter.What);
値のコレクションを、共通のキーを共有する単一の値のコレクションに変換する GroupBy を実行するために、3 ダースの異なる方法を試しましたが、どれもうまくいきませんでした。私の試行のほとんどは、GroupBy 内で SelectMany を試行することを伴いました。それが可能であれば、コンパイラが私のベッドサイドでのやり方を気に入らないとだけ言っておきましょう。
編集:「フォーマット」の意味がわかりません。私たちが話しているデータ構造は、そのメンバーの 1 つとしてコレクションを持つ単なるクラスです。
class Student
{
public string Name { get; set; }
public Gender Gender { get; set; }
public ICollection<int> Grades { get; set; }
}