StudentID - MotherID - FatherID の 3 つの列を持つテーブル (Students) があります。
次のことを行うためにLINQクエリを作成する方法を理解するのに苦労しています:
私は、全兄弟の数が 'y' 未満 (母親 ID と父親 ID が同じ) で、半兄弟の数が 'z' 未満 (同じ父親 ID で母親 ID が異なる) のすべての生徒のリストを取得したいと考えています。
LINQ を使用すると、半分の兄弟関係に基づいて正しい行を取得できますが、完全な兄弟関係にはなりません。
var c = studentsDT
.GroupBy(a => new { a.FatherID}).Where(grp => grp.Count() <= halfSiblings)
.SelectMany(grp => grp.Select(r => r))
.GroupBy(a => new { a.MotherID}).Where(grp1 => grp1.Count() <= fullSiblings)
.SelectMany(grp1 => grp1.Select(r1 => r1));
テーブル データが次のような場合:
1 100 200
2 101 200
3 100 200
4 100 200
5 101 200
上記のデータ スニペットでは、学生 1 には父親による 2 つの完全な兄弟と 2 つの異母兄弟がいます。生徒 2 には、父方の兄弟姉妹が 1 人、腹違いの兄弟が 3 人います。
完全な兄弟姉妹が 2 人以下で、異母兄弟が 1 人以下の生徒のみを含むリストが必要な場合、どうすればこれを実現できますか?