Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 4.0 c语言中的复杂数据类型#_C# 4.0_Data Structures_Complex Data Types - Fatal编程技术网

C# 4.0 c语言中的复杂数据类型#

C# 4.0 c语言中的复杂数据类型#,c#-4.0,data-structures,complex-data-types,C# 4.0,Data Structures,Complex Data Types,我需要一些帮助来解决与C#中复杂数据类型相关的问题。我有以下类型的数据,我想将其保存在变量中,但这将是高效的性能,因为我必须使用它进行搜索,其中将有大量的数据。数据样本如下: ParentNode1 ChildNode1 ChildNode2 ChildNode3 ParentNode2 ParentNode3 ParentNode4 ChildNode1 ChildNode2

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

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

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

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

ListNode
    Data // string
    ParentIndex // index of parent in the previous list
因此,要搜索级别4,请转到该级别的列表,并在该级别的每个节点上执行
contains
或regex测试。如果匹配,则
ParentIndex
值将为您获取父对象,其
ParentIndex
将为您获取祖父母,以此类推

通过这种方式,您不必担心在层次结构中导航,除非找到匹配项,并且不必编写嵌套或递归算法来遍历树


您还可以维护您的层次结构,每个顶级节点都包含一个子节点列表,并仅为搜索而构建此二级列表。

您能告诉我您要搜索什么吗?当涉及到数据结构的效率时,这是非常重要的。谢谢回复。这些节点将是字符串类型,我将使用contains()或regexIs
parent-child
关系在其中搜索字符串,这些关系是预先为节点定义的?是的,必须通过数据类型在逻辑上实现。当我从某个节点获取一些数据时,我也需要它的父节点详细信息。是否应该有任何与搜索层次结构相关的附加约束?我的意思是寻找作为给定节点的子节点并包含。。。。