计算层次对象列表中所有项目的方法

Ste*_*ard 4 c# recursion hierarchy c#-3.0

我有一个简单的类定义为:

public class MyClass
{
   //Some properties
   public List<MyClass> SubEntries { get; set; }
   //Some more properties
}
Run Code Online (Sandbox Code Playgroud)

在另一个类中,我有一个上面类型的列表.目前,我有一个严重的心理障碍.我只需要遍历列表并计算MyClass的所有出现次数.由于SubEntries属性可以包含0个或多个条目,这些条目本身可以包含0个或更多条目,因此我需要某种recursice方法,除非LINQ提供了执行此操作的机制.

任何帮助释放这种心理日志果酱将不胜感激.

Jon*_*eet 11

假设你不介意递归树,并假设列表总是非空并且没有循环:

public class MyClass
{
    public List<MyClass> SubEntries { get; set; }

    public int SubEntryCount
    {
        get { return 1 + SubEntries.Sum(x => x.SubEntryCount); }
    }
}
Run Code Online (Sandbox Code Playgroud)

您可能希望将其重命名,以便明确它是子条目的总数,而不仅仅是直接子项.