一直在寻找解决方案,但到目前为止还没有找到。
我相当确定它可以通过一个 linq 调用但无法解决。
我有以下数据结构
Id ParentId Name ValidFlag
1 NULL parent 1 1
2 NULL parent 2 1
3 NULL parent 3 0
4 1 child 1 1
5 1 child 2 1
6 2 child 3 1
7 2 child 4 1
8 3 child 5 1
9 3 child 6 1
现在我想做的是返回所有有效的父母和他们的孩子,所以在这种情况下,我会返回除 ID = 3(父母 3)之外的所有内容。
有没有一种简单的方法可以用 LINQ 做到这一点?我猜有,但我的 LinqIQ 非常有限,我知道基础知识,但除此之外我需要很多帮助。
这是 ToLookup() 或 Union 的情况,还是两者都不是?
更新:
更具体地说,因为我没有这样做,两种类型的记录都在同一个表中,如果可能的话,我想返回所有记录,无论它是 1 查询中的父还是子。
它不像只选择 ValidFlag = 1 的所有记录那么简单。源数据库是一团糟,获取所有记录的唯一方法是找到“有效”父母,然后找到“有效”父母的所有孩子。我知道我可以只做一个简单的查询来返回所有有效的父记录,然后做一个单独的查询来找到这些父母的所有孩子,但是组合成 1 个 LINQ 查询是我失败的地方,我希望这是可能的。在这种情况下,可能存在无效父母的有效子条目,因此需要该问题