父节点包含所有子节点数据的总和

时间:2013-02-11 11:05:40

标签: c# asp.net recursion tree

我为Web应用程序创建了一个动态树。我的树结构看起来像:

id     name     pid     data1     data2

1      Item1    0 

2      Item2    1       70        45

3      Item3    0   

4      Item3    1       56        48

3      Item3    3       34        48
 ........

父节点不包含data1和data2的任何值。我已经为树创建了递归列表。但现在我需要做的是将所有子节点的data1和data2的值显示为父节点中data1和data2的值。

树是多层次的。如何向每个父节点添加其子节点的值?我正在使用C#btw。感谢

更新

 public class MyTree
{
    public MyTree()
    {
        children = new List<MyTree>();
    }
    public int id { get; set; }
    public string data { get; set; }
    public int pid { get; set; }
    public decimal? data1 { get; set; }
    public decimal? data2 { get; set; }            
    public IList<MyTree> children { get; set; }
}

1 个答案:

答案 0 :(得分:1)

如果已设置,则以下成员变量/已更新属性对将给出显式值,如果没有,则给出所有子项值的递归总和:

private decimal? _data1;
public decimal? data1
{
    get
    {
        if (_data1.HasValue)
            return _data1;
        // This needs System.Linq but can be done manually.
        return children.Sum(c => c.data1);
    }
    set { _data1 = value; }
}

(同样适用于data2。)

它不会阻止您在具有子项的元素上显式设置值。