var list = BusinessUnitManager.GetBusinessUnits(); // 源数据
var model = new BusinessUnitTree() { Id = "1", Name = list.FirstOrDefault(x => x.Id == "1").Name }; //根节点
model.Childs = BuildBusinessUnitTree(list, model.Id);
private static List<BusinessUnitTree> BuildBusinessUnitTree(List<BusinessUnitModel> list, string parentId)
{
var tree = new List<BusinessUnitTree>();
foreach (var item in list.Where(x => x.ParentId == parentId))
{
tree.Add(GetChildBusiness(list, new BusinessUnitTree
{
Id = item.Id,
Name = item.Name,
ParentId = item.ParentId
}));
}
return tree;
}
private static BusinessUnitTree GetChildBusiness(List<BusinessUnitModel> list, BusinessUnitTree treeNode)
{
//遍历当前节点的所有子节点
foreach (var item in list.Where(x => x.ParentId == treeNode.Id))
{
if (treeNode.Childs == null)
{
treeNode.Childs = new List<BusinessUnitTree>();
}
treeNode.Childs.Add(GetChildBusiness(list, new BusinessUnitTree
{
Id = item.Id,
Name = item.Name,
ParentId = item.ParentId
}));
}