public class TestClass
{
public List<MenuItem> Main = new List<MenuItem>();
public void Enter() //入口
{
List<MenuItem> allMenu = GetAllMenus(); //得到数据
Main.Add(allMenu.Where(x => x.MenuID == 1).FirstOrDefault());//根节点
AddMenu(allMenu, allMenu.Where(x => x.MenuID == 1).FirstOrDefault());//递归
//结果树形结构
List<MenuItem> treeMenu = Main;
}
//父子级递归
public void AddMenu(List<MenuItem> all, MenuItem curItem)
{
List<MenuItem> childItems = all.Where(ee => ee.ParentID == curItem.MenuID).ToList(); //得到子节点
curItem.ChildItems = childItems; //将子节点加入
//遍历子节点,进行递归,寻找子节点的子节点
foreach (var subItem in childItems)
{
AddMenu(all, subItem);
}
}
public List<MenuItem> GetAllMenus()
{
List<MenuItem>() listMenuS = NEW List<MenuItem>();
// 得到数据
// 结构如下:
// MenuID DisplayName ParentID ChildItems
// 1 Name1 0 根节点
// 2 Name2 1
// 3 Name3 1
// 4 Name4 2
// 5 Name5 2
return listMenuS;
}
}
//数据对象
public class MenuItem
{
public int MenuID { get; set; }
public string DisplayName { get; set; }
public int ParentID { get; set; }
public List<MenuItem> ChildItems { get; set; }
}
c# 父子级关系 递归处理
原创wx64422c161e8a1 ©著作权
©著作权归作者所有:来自51CTO博客作者wx64422c161e8a1的原创作品,请联系作者获取转载授权,否则将追究法律责任
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章