实现非二叉树及其相关操作的最佳.NET库(商业或开源)是什么?要求是动态插入和删除节点,复制/粘贴节点,查找埋在节点中的信息,将文件夹及其子项从树的一个区域复制/粘贴到另一个区域。树位于业务逻辑层。表示层是WPF。实现语言是C#。
答案 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)
树很容易编写,而且具体要求相对多样化,我不确定“树库”会非常有用。你为什么不写自己的?