c# 树形递归

public class Menu {
public string Name { get; set; }
public string Code { get; set; }
public string ParentCode { get; set; }
public List<Menu> list { get; set; }
}

public List<Menu> GetList(List<Menu> list,string parentCode) {
List<Menu> listMenu = new List<Menu>();
var listNew = list.Where(n => n.ParentCode == parentCode);
if (listNew != null && listNew.Count() > 0)
{
foreach (var item in listNew)
{
List<Menu> listChild = GetList(list, item.Code);
if (listChild!=null&&list.Count()>0) {
Menu menu = new Menu();
menu.Name = item.Name;
menu.Code = item.Code;
menu.ParentCode = item.ParentCode;
menu.list = GetList(list, item.Code);
listMenu.Add(menu);

}
else {
Menu menu = new Menu();
menu.Name = item.Name;
menu.Code = item.Code;
menu.ParentCode = item.ParentCode;
listMenu.Add(menu);
}

}

}
else {
return null;
}
return listMenu;
}

[HttpGet]
public IActionResult Get()
{
List<Menu> list = new List<Menu>()
{
new Menu(){
Name="菜单1",
Code="100",
ParentCode=""
},
new Menu(){
Name="菜单2",
Code="101",
ParentCode=""
},
new Menu(){
Name="菜单1-菜单1",
Code="100001",
ParentCode="100"
},
new Menu(){
Name="菜单1-菜单1-菜单1",
Code="100001001",
ParentCode="100001"
},
new Menu(){
Name="菜单1-菜单2",
Code="100002",
ParentCode="100"
}
,
new Menu(){
Name="菜单1-菜单3",
Code="100003",
ParentCode="100"
}
};
List<Menu> list1 = GetList(list,"");

原文地址:https://www.cnblogs.com/zhang-wenbin/p/14873977.html