苏飞论坛
标题: 如何使用递归进行对以下数据排序??大佬们教教 [打印本页]
作者: 青春之梦 时间: 2019-9-3 11:32
标题: 如何使用递归进行对以下数据排序??大佬们教教
json数据:
[
{
"mmid": 11,
"name": "1",
"ppid": 0
},
{
"mmid": 1,
"name": "6",
"ppid": 0
},
{
"mmid": 7,
"name": "2",
"ppid": 11
},
{
"mmid": 3,
"name": "3",
"ppid": 11
}]
通过递归进行排序成以下效果:
[
{
"mmid": 11,
"name": "1",
"ppid": 0
},
{
"mmid": 7,
"name": "2",
"ppid": 11
},
{
"mmid": 3,
"name": "3",
"ppid": 11
}
{
"mmid": 1,
"name": "6",
"ppid": 0
}
]
作者: clrscr 时间: 2019-9-3 15:39
本帖最后由 clrscr 于 2019-9-3 15:48 编辑
不会,你可以解析为集合,然后排序,然后组件新的集合,也可以达到同样的结果(C论坛貌似有大佬给出了代码)
作者: 青春之梦 时间: 2019-9-3 15:54
好的 谢谢
作者: 飞龙在天wang 时间: 2020-7-27 14:21
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
}));
}
//没有子节点时返回当前节点
return treeNode;
}
欢迎光临 苏飞论坛 (http://www.sufeinet.com/) |
Powered by Discuz! X3.4 |