You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#实现支持任意层级的递归树形模型遍历方法

正确的递归实现方案

你的递归代码层级计算错误的核心问题是使用了 level++,这会修改当前方法内的level变量,导致后续同级节点的层级被错误递增。同时还存在未定义变量category的问题,以下是修正后的实现:

修正后的完整代码

public IEnumerable<Model> GetItems(string link, int level = 1)
{
    foreach (var node in loadItems(link))
    {
        yield return new Model(node, level);
        // 递归传递层级时用level+1,不修改原level变量
        foreach (var subNode in GetItems(node.link, level + 1))
        {
            yield return subNode;
        }
    }
}

关键说明

  • 层级计算修正:用level + 1替代level++,前者生成新的层级值,不会改变当前方法中的level,确保每个子节点的层级都是父层级+1,同级节点层级一致。
  • 变量名修正:将原代码中未定义的category替换为遍历的node变量,避免编译错误。
  • 保留懒加载特性:继续使用yield return实现延迟加载,和原代码行为一致,避免一次性加载所有节点带来的性能问题。

调用示例

// 从根节点开始遍历,默认层级从1开始
var allItems = GetItems(rootLink);

内容的提问来源于stack exchange,提问作者user3544503

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 13:03:23