簡體   English   中英

遍歷子級到父級

[英]Iterate through child to parent

我正在從以下查詢中獲取數據,

    var targetItems = await _dbContext.TargetItems
        .Include(ti => ti.BranchTargetItem)
        .ThenInclude(bti => bti.BranchTarget)
        .ToListAsync(cancellationToken);

我需要找到一種方法來對樹中從底部到頂部的值求和。 必須對它自己的第一級子值分別求和,就像我在下面評論的那樣,

targetItems = {
   "item":"A",
   "values":14, << sum of B + C values
   "childs":[
      {
         "item":"B",
         "values":2,
         "childs":[]
      },
      {
         "item":"C", << sum of D + E + H values
         "values":12,
         "childs":[
            {
               "item":"D",
               "values":5,
               "childs":[]
            },
            {
               "item":"E",
               "values":4, << sum of F + G values
               "childs":[
                  {
                     "item":"F",
                     "values":2,
                     "childs":[]
                  },
                  {
                     "item":"G",
                     "values":2,
                     "childs":[]
                  }
               ]
            },
            {
               "item":"H",
               "values":3,
               "childs":[]
            }
         ]
      }
   ]
}

無法在此處發布任何代碼,因為我什至還沒有接近解決方案。

int SetSumOfChildren(object node){
  if(!(node.childs?.Any() ?? false)){
    node.values = node.values ?? 0;
  }
  else {      
    int sum = 0;
    foreach(var n in node.childs){
      sum += SetSumOfChildren(n);
    }
    node.values = sum;
  }
  return node.values;
}

SetSumOfChildren(data);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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