循环通过自我引用列表添加到树视图中

时间:2012-12-07 17:53:56

标签: c# recursion reference treeview self

我有一个像这样的列表

  • ID |名称|标题|经理ID

  • 1 |彼得| CEO |空

  • 2 |埃里克|经理| 1
  • 3 |布拉德|经济| 1
  • 4 |坑|销售| 2
  • 5 |迈克|秘书| 4
  • 6 | Mac |复印机| 5
  • 7 |本|董事会|空

此列表可以是无限的。这里的空值是因为它们没有Manager。 如何将其添加到树视图并正确获取所有父节点和子节点?

需要在循环中完成此操作,并且无法更改数据库的来源, 我想做点什么?

private void treew(TreeNode treeNode, List<Employees> employ)
    {
        foreach (Employees option in employ)
        {
            TreeNode nodeOutput;
    //Add parent node
            foreach (Employees optionItems in employ)
            {
                if (option.ID == optionItems.ManagerID)
                {
        //Add childnode
                    TreeNode nodeOption;
                    nodeOutput.Nodes.Add(nodeOption);
                }
            }
            treeNode.Nodes.Add(nodeOutput);
        }
    }

1 个答案:

答案 0 :(得分:0)

private List<Employees> employees;
private void treew(TreeNode root, int? managerID)
{
    foreach (Employees option in employ.Where(x => x.MangerID == managerID))
    {
        TreeNode nodeOutput;
        treew(nodeOutput, option.ID);
        root.Nodes.Add(nodeOutput);
    }
}

将TreeView的根节点传递给第一个调用,或者创建另一个版本,它将TreeView作为第一个参数并执行相同的操作。