//找出顶级项
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);
}
}
/// <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);
}
}