簡體   English   中英

Linq-獲取層次結構中最高的元素

[英]Linq - get elements that are top in hierarchy

我有以下數據:

在此處輸入圖片說明

我需要獲取樹數據結構中的頂級元素。 AncestorId等於DescendantId所有行都是父行,但我需要首先獲取頂級父行。 例如:

2 and 34

因為ID 2元素僅在descendantid列中存在一次, ID 34元素也是如此。

然后,我必須讓孩子的ID 2低於ID 2ID 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM