How to generate tree in c# from a list in console

问题描述 投票:0回答:1
  class Program
    {
        public static void Main()
        {
            List<dynamic> departmentList = new()
            {
                new {DeptId = 1, DeptName = "Parent Department", SubDeptId = 0},
                new {DeptId = 2, DeptName = "Under Parent Department 1", SubDeptId = 1},
                new {DeptId = 3, DeptName = "Under Parent Department 2", SubDeptId = 1},
                new {DeptId = 4, DeptName = "Under Parent Department 1 - 1", SubDeptId = 3},
                new {DeptId = 5, DeptName = "Under Parent Department 1 - 2", SubDeptId = 3},
                new {DeptId = 6, DeptName = "Under Parent Department 2 - 1", SubDeptId = 4},
                new {DeptId = 7, DeptName = "Under Parent Department 2 - 2", SubDeptId = 4}
            };
    
            foreach (var department in departmentList)
            {
                if (department.SubDeptId == 0)
                {
                    Console.WriteLine(department.DeptName);
                    var subs = departmentList.Where(x => x.SubDeptId == department.DeptId).ToList();
                    foreach (var sub in subs)
                    {
                        Console.WriteLine("\t" + sub.DeptName);
                        var subs2 = departmentList.Where(x => x.SubDeptId == sub.DeptId).ToList();
                        foreach (var sub2 in subs2)
                        {
                            Console.WriteLine("\t\t" + sub2.DeptName);
                        }
                    }
                }
            }
        }
    }

/*expected result:

    Parent Department
        Under Parent Department 1
            Under Parent Department 1 - 1
            Under Parent Department 1 - 2
        Under Parent Department 2
            Under Parent Department 2 - 1
            Under Parent Department 2 - 2
*/

我想从这个列表生成一棵树。树应该是完全动态的。请任何人帮助我。检查代码中的注释部分,我希望结果相同。请帮我。谢谢。

c# console console-application
1个回答
-1
投票
using System;
using System.Collections.Generic;
using System.Linq;

class Program
{
    static void Main()
    {
        List<dynamic> departmentList = new()
        {
            new { DeptId = 1, DeptName = "Parent Department", SubDeptId = 0 },
            new { DeptId = 2, DeptName = "Under Parent Department 1", SubDeptId = 1 },
            new { DeptId = 3, DeptName = "Under Parent Department 2", SubDeptId = 1 },
            new { DeptId = 4, DeptName = "Under Parent Department 1 - 1", SubDeptId = 3 },
            new { DeptId = 5, DeptName = "Under Parent Department 1 - 2", SubDeptId = 3 },
            new { DeptId = 6, DeptName = "Under Parent Department 2 - 1", SubDeptId = 4 },
            new { DeptId = 7, DeptName = "Under Parent Department 2 - 2", SubDeptId = 4 }
        };

        foreach (var department in departmentList)
        {
            if (department.SubDeptId == 0)
            {
                Console.WriteLine(department.DeptName);
                var subs = departmentList.Where(x => x.SubDeptId == department.DeptId).ToList();
                foreach (var sub in subs)
                {
                    Console.WriteLine("\t" + sub.DeptName);
                    var subs2 = departmentList.Where(x => x.SubDeptId == sub.DeptId).ToList();
                    foreach (var sub2 in subs2)
                    {
                        Console.WriteLine("\t\t" + sub2.DeptName);
                    }
                }
            }
        }

        Console.ReadKey();
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.