C# 使用LINQ嵌套数据结构查询并返回嵌套组

C# 使用LINQ嵌套数据结构查询并返回嵌套组,c#,linq,C#,Linq,除了嵌套级别未知的数据结构之外,还有其他方法吗?另外,虽然我相信在另一个问题中也是这样,但每个级别都有多个条目(假设它可能只有一个条目,或者零) 此外,是否有一种好的方法来存储这样的数据结构,以便可以轻松找到每个对象的父对象?我曾考虑过锯齿状数组,但在运行时似乎很难生成,因为我不知道嵌套有多深。具有类似treeview的结构的东西是理想的,但是如果我只是将其用于数据存储,而不是用于视觉部分,我不想实现控件 作为最后一种手段,我曾考虑编写自己的类来存储数据,但如果不需要的话,我不想这样做。您正在寻

除了嵌套级别未知的数据结构之外,还有其他方法吗?另外,虽然我相信在另一个问题中也是这样,但每个级别都有多个条目(假设它可能只有一个条目,或者零)

此外,是否有一种好的方法来存储这样的数据结构,以便可以轻松找到每个对象的父对象?我曾考虑过锯齿状数组,但在运行时似乎很难生成,因为我不知道嵌套有多深。具有类似treeview的结构的东西是理想的,但是如果我只是将其用于数据存储,而不是用于视觉部分,我不想实现控件


作为最后一种手段,我曾考虑编写自己的类来存储数据,但如果不需要的话,我不想这样做。

您正在寻找一个包含父引用的n元树吗

class Node
{
    public Node Parent { get; }
    public IEnumerable<Node> Children { get; }
}

IEnumerable<Node> Flatten(Node node)
{
    yield return node;
    foreach (var child in node.Children)
    {
        yield return Flatten(child);
    }
}
类节点
{
公共节点父节点{get;}
公共IEnumerable子项{get;}
}
IEnumerable展平(节点)
{
收益回报节点;
foreach(node.Children中的变量child)
{
收益率平坦(子);
}
}

嵌套级别未知?这听起来可能对cpu有害……我很确定它不会低于20,当然也不会高于30(虽然理论上可能是)。我是从一个文本文件中读出来的,所以没那么糟糕。你能告诉我们数据结构到底是什么样的(即代码)吗?但我如何将数据放入该结构中(我需要的是展平的相反方向,而不是展平本身)?@soandos:取决于数据的外观。@dbt,你有办法做到这一点吗?