我有表層次列表如下:不同的輸出小孩和父母的層次列表
ID ParentID
1 0
2 7
3 1
4 5
5 1
6 2
7 1
8 6
9 0
10 9
我要輸出到listTtem如果孩子LVL1加|___
然後+值,如果孩子拉特2加<space>
然後|___
然後+值
輸出:
1
|___ 3
|___ 5
|___ 4
|___ 7
|___ 2
|___ 6
|___ 8
|___ 11
9
|___ 10
什我完成了:
public class MyClass
{
public List<MyClass> Children = new List<MyClass>();
public string ID { get; set; }
public string ParentID { get; set; }
public string Name { get; set; }
}
// GET: Reporting
public ActionResult Index()
{
List<MyClass> ofitems = new List<MyClass>();
var dbs = db.ORG_FUNCTION.Select(pk => new { pk.FUNCTION_ID, pk.FUNCTION_PARENT_ID, pk.NAME });
foreach (var s in dbs)
{
ofitems.Add(new MyClass { ID = s.FUNCTION_ID.ToString(), ParentID = s.FUNCTION_PARENT_ID.ToString(), Name = s.NAME });
}
Action<MyClass> SetChildren = null;
SetChildren = parent =>
{
parent.Children = ofitems
.Where(childItem => childItem.ParentID == parent.ID)
.ToList();
//Recursively call the SetChildren method for each child.
parent.Children
.ForEach(SetChildren);
};
//ViewBag.list = ????;
return View();
}
但它只是顯示相同的輸出。如何獲得父親孩子的不同輸出
不是答案,而是建議:你的'SetChildren'是二次('O(N * N)') ,而它可以是線性的('O(n)')。 –