我需要一些帮助来解决与C#中复杂数据类型相关的问题。我有以下类型的数据,我想将它保存在变量中,但它将具有性能效率,因为我必须使用它进行搜索,并且其中将有大量数据。数据样本如下:
ParentNode1
ChildNode1
ChildNode2
ChildNode3
ParentNode2
ParentNode3
ParentNode4
ChildNode1
ChildNode2
Node1
Node2
Node3
Nth level Node1
ChildNode3
ParentNode5
以上数据只是显示数据层次结构的示例。我不确定嵌套的List,Dictionary,ienumerable或链接列表哪个与性能最相关。谢谢
答案 0 :(得分:0)
如果您知道搜索将在单个级别进行,那么您可能需要一个列表列表:每个级别一个列表。如果您的层次结构有N个级别,那么您有N个列表。每个节点都包含以下节点:
ListNode
Data // string
ParentIndex // index of parent in the previous list
因此,要搜索级别4,您将转到该级别的列表,并对该级别中的每个节点执行contains
或正则表达式测试。如果匹配,则ParentIndex
值将为您提供父级,其ParentIndex
将为您提供祖父母等。
这样,除了找到匹配项之外,您不必担心导航层次结构,并且您不必编写嵌套或递归算法来遍历树。
您也可以使用包含子节点列表的每个顶级节点维护您的层次结构,并仅为搜索构建此辅助列表。