版权声明:本文为博主原创文章,未经博主允许不得转载。
- 
       
 //找出顶级项
 
- List<PClass> listPParent = listP.FindAll(
- 
       
 delegate
 
 (PClass pc)
- {
- 
       
 if
 
 (pc.ParentID == 0)
 
 //顶级项
 
- {
- 
       
 return
 
 
 true
 
 ;
- }
- {
- 
       
 return
 
 
 false
 
 ;
- }
- }
- );
//找出顶级项 
		List<PClass> listPParent = listP.FindAll(
                    delegate(PClass pc)
                    {
                        if (pc.ParentID == 0)//顶级项
                        {
                            return true;
                        }
                        {
                            return false;
                        }
                    }
                );- 
       
 if
 
 (listPParent.Count > 0)
- {
- 
       
 foreach
 
 (PClass itemParent
 
 in
 
 listPParent)
- {
- 
       var result =
 
 new
 
 List<PClassView>();
- 
       var itemParentView =
 
 new
 
 PClassView()
- {
- ParentID = itemParent.ParentID,
- ClassType = itemParent.ClassType,
- ID = itemParent.ID
- };
- 
       recursion(itemParent, result, listP,
 
 “”
 
 );
 
 //找出一个顶级项下的所有子项
 
- list.Add(itemParentView);
- list.AddRange(result);
- }
- }
		if (listPParent.Count > 0)
                {
                    foreach (PClass itemParent in listPParent)
                    {
                        var result = new List<PClassView>();
                        var itemParentView = new PClassView()
                        {
                            ParentID = itemParent.ParentID,
                            ClassType = itemParent.ClassType,
                            ID = itemParent.ID
                        };
                        recursion(itemParent, result, listP, ""); //找出一个顶级项下的所有子项
                        list.Add(itemParentView);
                        list.AddRange(result);
                    }
                }- 
       
 /// <summary>
 
- 
       
 /// 递归
 
- 
       
 /// </summary>
 
- 
       
 /// <param name=”parentNode”>当前节点</param>
 
- 
       
 /// <param name=”result”>子节点</param>
 
- 
       
 /// <param name=”list”>全部节点</param>
 
- 
       
 /// <param name=”strLevel”>级数标志</param>
 
- 
       
 private
 
 
 void
 
 recursion(PClass parentNode, IList<PClassView> result, IList<PClass> list,
 
 string
 
 strLevel)
- {
- 
       strLevel = strLevel+
 
 “-”
 
 ;
- 
       
 foreach
 
 (var item
 
 in
 
 from c
 
 in
 
 list where c.ParentID == parentNode.ID select c)
- {
- 
       var child =
 
 new
 
 PClassView
- {
- ParentID = item.ParentID,
- ClassType = item.ClassType,
- ID = item.ID,
- Name = item.Name,
- NameView=item.NameView
- };
- 
       
 if
 
 (item.ParentID ==
 
 null
 
 )
- {
- result.Add(child);
- }
- 
       
 else
 
- {
- child.NameView = strLevel + child.NameView;
- result.Add(child);
- }
- recursion(child, result, list, strLevel);
- }
- }
 

