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
*/
我想从这个列表生成一棵树。树应该是完全动态的。请任何人帮助我。检查代码中的注释部分,我希望结果相同。请帮我。谢谢。
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();
}
}