菜单类
public class Enum
{
public int id { get; set; }
public string Name { get; set; }
public int pid { get; set; }
}
树形菜单类
public class ResposeEnum
{
public int id { get; set; }
public string Name { get; set; }
public int pid { get; set; }
public List<ResposeEnum> Childen { get; set; }
}
递归方法封装,调用
static List<ResposeEnum> GetMenuTree(List<Enum> list, int pid)
{
List<ResposeEnum> tree = new List<ResposeEnum>();
List<Enum> children = list.Where(m => m.pid == pid).ToList(); //从第一级根节点开始
if (children.Count > 0)
{
for (var i = 0; i < children.Count; i++)
{
ResposeEnum itemMenu = new ResposeEnum()
{
id = children[i].id,
Name = children[i].Name,
pid = children[i].pid,
Childen = GetMenuTree(list, children[i].id)
};
tree.Add(itemMenu);
}
}
return tree;
}
//调用,测试效果
List<Enum> cds = new List<Enum>(){
new Enum(){ id=1,Name="人员管理",pid=0 },
new Enum(){ id=2,Name="人员添加",pid=1 },
new Enum(){ id=3,Name="人员修改",pid=1 },
new Enum(){ id=4,Name="菜单管理",pid=0 },
new Enum(){ id=5,Name="菜单添加",pid=4 },
new Enum(){ id=6,Name="菜单修改",pid=4 },
new Enum(){ id=7,Name="菜单修改2",pid=6 }
};
List<ResposeEnum> res = GetMenuTree(cds, 0);