苏飞论坛

标题: 如何使用递归进行对以下数据排序??大佬们教教 [打印本页]

作者: 青春之梦    时间: 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
clrscr 发表于 2019-9-3 15:39
不会,你可以解析为集合,然后排序,然后组件新的集合,也可以达到同样的结果(C论坛貌似有大佬给出了代码)

好的  谢谢   
作者: 飞龙在天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