版权声明:本文为博主原创文章,未经博主允许不得转载。
-
//找出顶级项
- 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);
- }
- }