using System; 
 | 
using System.Collections.Generic; 
 | 
using System.Data; 
 | 
using System.Linq; 
 | 
using System.Web; 
 | 
  
 | 
namespace WebAPI.Models 
 | 
{ 
 | 
    public class ToHierarchy 
 | 
    { 
 | 
        public static List<Menu> ToHierarchyList(List<Menu> limits, string HPartentID/*int? HPartentID = 0*/) 
 | 
        { 
 | 
            List<Menu> newLimitList = new List<Menu>(); 
 | 
            newLimitList = limits.Where(t => t.HPartentID == HPartentID).ToList(); 
 | 
            for (int i = 0; i < newLimitList.Count; i++) 
 | 
            { 
 | 
                newLimitList[i].childMenus = ToHierarchyList(limits, newLimitList[i].HPartentID);//下一层级 
 | 
            } 
 | 
            return newLimitList; 
 | 
        } 
 | 
  
 | 
  
 | 
        public static void digui(DataTable dt, List<Menu> tree) 
 | 
        { 
 | 
            for (int m = 0; m < tree.Count; m++) 
 | 
            { 
 | 
                tree[m].childMenus = new List<Menu>(); 
 | 
                for (int i = 0; i < dt.Rows.Count; i++)//第一次循环,得到所有根节点的子集 
 | 
                { 
 | 
                    if (tree[m].HitemID.ToString() == dt.Rows[i]["HPartentID"].ToString() && dt.Rows[i]["HitemID"].ToString() != dt.Rows[i]["HPartentID"].ToString()) 
 | 
                    { 
 | 
                        Menu tbjson = new Menu(); 
 | 
                        tbjson.HitemID = dt.Rows[i]["HitemID"].ToString(); 
 | 
                        tbjson.HPartentID = dt.Rows[i]["HPartentID"].ToString(); 
 | 
                        tbjson.HNumber = dt.Rows[i]["HNumber"].ToString(); 
 | 
                        tbjson.HName = dt.Rows[i]["HName"].ToString(); 
 | 
                        tbjson.HLevel = tree[m].HLevel; 
 | 
                        tbjson.Hurl = dt.Rows[i]["Hurl"].ToString(); 
 | 
                        tree[m].childMenus.Add(tbjson); 
 | 
                    } 
 | 
                } 
 | 
                for (int i = 0; i < tree[m].childMenus.Count; i++) 
 | 
                { 
 | 
                    digui(dt, tree[m].childMenus);//再次用子集去循环,拿出子集的子集 
 | 
                } 
 | 
            } 
 | 
  
 | 
        } 
 | 
    } 
 | 
} 
 |