我有一个包含三列的表(学生):
StudentID - MotherID - FatherID
我很难理解如何形成 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 有一个同父异母的兄弟姐妹和三个同父异母的兄弟姐妹。
如果我想要一个只有不超过两个同胞兄弟姐妹和不超过一个同胞兄弟姐妹的学生名单,这怎么可能实现?