最好的树木.NET库

时间:2009-09-02 10:29:08

标签: .net tree

实现非二叉树及其相关操作的最佳.NET库(商业或开源)是什么?要求是动态插入和删除节点,复制/粘贴节点,查找埋在节点中的信息,将文件夹及其子项从树的一个区域复制/粘贴到另一个区域。树位于业务逻辑层。表示层是WPF。实现语言是C#。

4 个答案:

答案 0 :(得分:4)

毫无疑问,我会说LINQ to XML

XDocument doc = new XDocument(
    new XDeclaration("1.0", "utf-8", "true"),
    new XComment("Comment"),
    new XElement("Employees",
        new XElement("RootElement",
            new XElement("Employee",
                new XAttribute("id", "123"),
                new XElement("name", "John"),
                new XCData("CData")))));

// Selection multiple nodes
var allEmployees = xdoc.Root.Elements("Employees");
// Select single node
var employeeJohn = from node in xdoc.Root.Descendants().Elements("Employees").Elements("Employee")
                   where node.Attribute("id").Value == "123"
                   select node;

// Insert node
XElement newNode = new XElement("NewNode", "Node content");
allEmployees.Add(newNode);

// Delete node
employeeJohn.Remove();

答案 1 :(得分:4)

我会用:

class MyTreeNode : List<MyTreeNode>
{
    // declare per-node properties here, e.g.
    public string Name { get; set; }
}

构建和重新排列树非常简单:

MyTreeNode root = new MyTreeNode {Name = "root"};

MyTreeNode firstChild = new MyTreeNode {Name = "1"};
root.Add(firstChild);

MyTreeNode secondChild = new MyTreeNode { Name = "2" };
root.Add(secondChild);

root.Remove(firstChild);
secondChild.Add(firstChild);

答案 2 :(得分:3)

您可能希望在codeplex上查看QuickGraph。

答案 3 :(得分:2)

树很容易编写,而且具体要求相对多样化,我不确定“树库”会非常有用。你为什么不写自己的?