c# - 汇总树上的值

标签 c# linq recursion tree aggregate

我使用树控件来查看基于嵌套(父子)表的一些分层项目。

每个节点都有接受名称和值的 NameValue 格式。

但只有叶子(最后一个节点)有整数值, parent 的值留空(只有他们的名字)。

我想汇总值,以便每个父节点都保存其子节点和叶值的总和。

我认为完成此任务需要递归或 LINQ,但我不知道如何实现?

也许一些伪代码会对我有所帮助。

在此先感谢您的帮助!

最佳答案

这是未经测试的,但我认为设置所有节点的所有值可能有效:

public void SetNodeValues(Node node)
{
    if (node.Name == String.Empty)
    {
        //If it has no name it is a leaf, which needs no value
        return;
    }
    else
    {
        //Make sure all child-nodes have values
        foreach (var childNode in node.ChildNodes)
        {
            SetNodeValues(childNode);
        }

        //Sum them up and set that as the current node's value
        node.Value = node.ChildNodes.Sum(x => x.Value);
    }
}

关于c# - 汇总树上的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5691902/

相关文章:

c# - LINQ to Entities 中的字符串拆分

c# - LINQ 查询以从分组中查找最小值 - 无法创建类型为 'X' 的常量

c# - 你能用 lambda 表达式创建一个简单的 'EqualityComparer<T>' 吗

java - 如何修复CodingBat中的递归代码错误?

python - 使用Python创建递归拓扑树

c# - 枚举和文本框组合的 MVC5 部分或编辑器模板?

C# - 如何以编程方式填充 .net DataGridView?

c# - StreamWriter 不写入文件

c# - 同时具有 CASE 语句和 SUM 函数的 LINQ 查询

python - 为什么这个迭代 Collat​​z 方法比它在 Python 中的递归版本慢 30%?