我Node
在 C# 中有一个具有以下属性的类:
public class Node
{
public int Id {get;set;}
public int? ParentId {get;set;}
public string Label {get;set;}
}
我有一个TreeView
控件,它提供以下方法来创建新节点:
MyTreeView.CreateNode(key, label);
parent.Nodes.CreateNode(key, label);
如果我想添加一个新的子节点,我需要使用第二种方法,否则使用第一种。两者都返回一个类型的对象TreeNode
。
考虑到根节点有,你将如何在 C# 中创建一个递归函数来填充树视图ParentId = null
?
这是我到目前为止所做的:
// create a list of root nodes
var roots = myList.Where(x => x.ParentId == null);
// send the roots to a recursive func
foreach(var root in roots)
{
AddNode(null,root,myList);
}
这是我的递归函数:
private void AddNode(Node parent, Node current, IList<Node> items)
{
TreeNode treenode = null;
if(parent == null)
{
treenode = mytree.CreateNode(current.Id.ToString(), current.Label);
}else{
var parentnode = mytree.GetNode(parent.Id.ToString());
treenode = parentnode.Nodes.CreateNode(current.Id.ToString(), current.Label);
}
// call the recursion for the children
var children = items.Where(x => x.ParentId == current.Id);
foreach(var child in children)
{
AddNode(current, child, items);
}
}