using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Web; namespace WebAPI.Models { public class ToHierarchy { public static List ToHierarchyList(List limits, string HPartentID/*int? HPartentID = 0*/) { List newLimitList = new List(); 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 tree) { for (int m = 0; m < tree.Count; m++) { tree[m].childMenus = new List(); 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);//再次用子集去循环,拿出子集的子集 } } } } }