首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C# 遞歸構建樹形列表:從扁平數據庫表生成層級結構

     編輯:程式設計綜合問答

數據模型

public class Node {
    public int Id { get; set; }
    public string Name { get; set; }
    public int ParentId { get; set; } // 根節點 ParentId = 0 或 null
    public List Children { get; set; } = new List();
}

遞歸構建算法

public List BuildTree(List flatList, int rootPid = 0) {
    return flatList
        .Where(n => n.ParentId == rootPid)
        .Select(n => {
            n.Children = BuildTree(flatList, n.Id);
            return n;
        })
        .ToList();
}

// 用法
var allNodes = dbContext.Nodes.ToList(); // 從數據庫讀取
var tree = BuildTree(allNodes);

性能優化(大數據量)

  1. 先構建 Dictionary> 映射 ParentId -> 子節點列表,避免重複遍歷列表。
  2. 使用迭代而非遞歸防止棧溢出。
  3. 僅查詢所需字段,減少內存佔用。

前端綁定

將樹序列化為 JSON,綁定至 TreeView、zTree、Element UI Tree 等組件展示。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved