我为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; }
}
答案 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
。)
它不会阻止您在具有子项的元素上显式设置值。