.net 递归 父子表结构 生成树

 private static string RecursionMenuTree(List<Menu> menus, long parentID = 0, StringBuilder sb = null)
        {
            if (sb == null)
            {
                sb = new StringBuilder();
            }

            var parentMenus = menus.Where(x => x.ParentID == parentID).ToList();

            parentMenus.ForEach(x =>
             {
                 sb.Append("{");
                 sb.AppendFormat(""ID":"{0}",", x.ID.ToString());
                 sb.AppendFormat(""Path":"{0}",", x.Path);
                 sb.AppendFormat(""MenuName":"{0}",", x.MenuName);
                 sb.AppendFormat(""OrderNum":"{0}",", x.OrderNum.ToString());
                 sb.AppendFormat(""Type":"{0}"", x.Type.ToString());
                 var children = menus.Where(c => c.ParentID == x.ID);
                 if (children?.Count() > 0)
                 {
                     sb.Append(""children":[");
                     RecursionMenuTree(menus, x.ID, sb);
                     sb.Append("]");
                 }
                 sb.Append("},");
             });
            return sb.ToString();
        }
原文地址:https://www.cnblogs.com/zengpeng/p/14740219.html