我有以下数据:
我需要获取树数据结构中的顶级元素。 AncestorId
等于DescendantId
的所有行都是父母,但我需要先得到最高父母。例如:
2 and 34
带有ID 2
的Becuase元素只在descendantid
列中存在一次,对于带有ID 34
的元素也是如此。
然后我必须让孩子们在ID 2
和ID 34
以下等等,这样我才能开始构建我的树结构。
这是表数据在可视树中的外观:
现在我有以下Linq语句来获取父节点:
// get parent nodes
var parentNodes = data.Where(i => i.AncestorId == i.DescedantId ).ToList();
我怎样才能获得最高父母的linq查询,以及如何让孩子等?
感谢任何帮助。
答案 0 :(得分:0)
编辑: 要获得Top父母(即他们只在Descendant Id中出现一次),您可以执行以下操作
var parentNodes = data
.Where(i => i.AncestorId == i.DescedantId &&
(data.Count(d => d.DescedantId == i.DescedantId) == 1))
.ToList();
为了得到父母的孩子:
var allChildren = data.Except(parentNodes);
var someParent = parentNodes.First();
var someParentsChildren =
allChildren.Where(i => i.AncestorId == someParent.DescendantId)