[英]Linq - get elements that are top in hierarchy
我有以下數據:
我需要獲取樹數據結構中的頂級元素。 AncestorId
等於DescendantId
所有行都是父行,但我需要首先獲取頂級父行。 例如:
2 and 34
因為ID 2
元素僅在descendantid
列中存在一次, ID 34
元素也是如此。
然后,我必須讓孩子的ID 2
低於ID 2
和ID 34
,以此類推,這樣我才能開始構建樹結構。
這是表數據在可視樹中的外觀:
現在,我有以下Linq語句來獲取父節點:
// get parent nodes
var parentNodes = data.Where(i => i.AncestorId == i.DescedantId ).ToList();
我如何在linq中查詢頂級父母,然后如何獲得孩子等?
感謝任何幫助。
編輯:要獲得頂級父母(即他們僅在后代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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.