2


1

非バイナリツリーとそれに関連する操作を実装している最高の.NETライブラリ(商用またはオープンソース)は何ですか? 必要条件は、ノードの動的な挿入と削除、ノードのコピー/貼り付け、ノードに埋め込まれた情報の検索、フォルダとその子のツリーのある領域から別の領域へのコピー/貼り付けです。 ツリーはビジネスロジック層にあります。 プレゼンテーション層はWPFです。 実装言語はC#です。

4 Answer


4


私は間違いなく LINQ to XMLと言うでしょう。

XDocument doc = new XDocument(新しいXDeclaration( "1.0"、 "utf-8"、 "true")、新しいXComment( "コメント")、新しいXElement( "従業員"、新しいXElement( "RootElement"、新しいXElement( " "Employee"、新しいXAttribute( "id"、 "123")、新しいXElement( "name"、 "John")、新しいXCData( "CData")))))。

// Selection multiple nodes
var allEmployees = xdoc.Root.Elements( "Employees");
// Select single node
var employeeJohn = xdoc.Root.Descendants()内のノード要素( "Employees")。要素( "Employee")ここで、node.Attribute( "id")値== "123"ノードを選択します。

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

// Delete node
employeeJohn.Remove();


4


私は使うだろう:

MyTreeNode:List {//ここでノードごとのプロパティを宣言します。 パブリック文字列Name {get;セット; }}

ツリーの構築と再配置はとても簡単です。

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);


3


あなたはコードプレックスでQuickGraphを見たいと思うかもしれません。


2


木は書くのがとても簡単で、特定の要求が比較的多様であるので、「木ライブラリ」が非常に有用であるかどうか私にはわかりません。 自分で書いてみませんか?