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