c#中的复杂数据类型

时间:2016-03-08 22:31:37

标签: c#-4.0 data-structures complex-data-types

我需要一些帮助来解决与C#中复杂数据类型相关的问题。我有以下类型的数据,我想将它保存在变量中,但它将具有性能效率,因为我必须使用它进行搜索,并且其中将有大量数据。数据样本如下:

ParentNode1
           ChildNode1
           ChildNode2
           ChildNode3
ParentNode2
ParentNode3
ParentNode4
           ChildNode1
           ChildNode2
                     Node1
                     Node2
                     Node3
                          Nth level Node1
           ChildNode3
ParentNode5

以上数据只是显示数据层次结构的示例。我不确定嵌套的List,Dictionary,ienumerable或链接列表哪个与性能最相关。谢谢

1 个答案:

答案 0 :(得分:0)

如果您知道搜索将在单个级别进行,那么您可能需要一个列表列表:每个级别一个列表。如果您的层次结构有N个级别,那么您有N个列表。每个节点都包含以下节点:

ListNode
    Data // string
    ParentIndex // index of parent in the previous list

因此,要搜索级别4,您将转到该级别的列表,并对该级别中的每个节点执行contains或正则表达式测试。如果匹配,则ParentIndex值将为您提供父级,其ParentIndex将为您提供祖父母等。

这样,除了找到匹配项之外,您不必担心导航层次结构,并且您不必编写嵌套或递归算法来遍历树。

您也可以使用包含子节点列表的每个顶级节点维护您的层次结构,并仅为搜索构建此辅助列表。