【发布时间】:2013-08-20 19:21:08
【问题描述】:
我有一个包含三列的表(学生):
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
在上面的数据sn-p中,学生1有两个同父异母的兄弟姐妹和两个同父异母的兄弟姐妹。 学生 2 有一个同父异母的兄弟姐妹和三个同父异母的兄弟姐妹。
如果我想要一份学生名单,其中全兄弟不超过两个,半兄弟不超过 1 个,如何实现?
【问题讨论】:
-
同父异母的学生不也是同父异母的兄弟姐妹吗?