2016-02-17 20 views
0

的情況計算父彙總值如下:如何樹形列表

我有一個樹形列表,其中項目具有4個領域:主鍵,主密鑰,描述和數值。 如果父鍵等於0,那麼它是一個根。 我只有子項的數值,我需要爲每個父項計算一個彙總值直到根。

我該怎麼做?

+1

你的描述你的需求,即使目前還不清楚,如果它是一個SQL問題或C#。但是你有什麼嘗試,有什麼問題呢? –

+0

你是什麼意思*計算每個父母的總結值直到根*? –

+0

@TimSchmelter標籤說c#。但是我不知道該怎麼做。我嘗試了嵌套的foreach循環,但沒有成功,這就是爲什麼我問我該怎麼做。 – ArDevTeam

回答

0

使用遞歸:

public int SumRecursive(ClassWithParent item, int childSum) { 
    var currentSum = childSum + item.NumericValue; 

    if (item.ParentKey == 0) { 
     // finished recursion 
     return currentSum; 
    } 
    else { 
     // retrieve parrent from DB and call recursivly 
     var parent = DbContext.ClassWithParent.Find(item.ParentKey); 
     return SumRecursive(parent, currentSum); 
    } 
} 
+0

如果首先'item'是** root **項目? – Prisoner

+0

然後ParentKey將爲'0',並且會返回'item.NumericValue'。 (對於初始調用,將'childSum'傳遞爲'0'。) –