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

时间:2009-05-28 14:52:17

标签: c# c#-3.0 recursion hierarchy

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

public class MyClass
{
   //Some properties
   public List<MyClass> SubEntries { get; set; }
   //Some more properties
}

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

任何帮助解除这种精神记录的问题都将受到赞赏。

1 个答案:

答案 0 :(得分:11)

假设您不介意递归树,并假设列表始终为非null且没有循环:

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

    public int SubEntryCount
    {
        get { return 1 + SubEntries.Sum(x => x.SubEntryCount); }
    }
}

你可能想要重命名它,以便明确它是子条目的数量,而不仅仅是直接的孩子。