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

4

我有一个简单的类定义如下:

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

在另一个类中,我有一个上述类型的列表。目前,我遇到了严重的思维障碍。我只需要遍历列表并计算MyClass的所有出现次数。由于SubEntries属性可以包含0个或多个条目,这些条目本身又可以包含0个或多个条目,因此我认为我需要一种递归方法,除非LINQ提供了一种机制来解决这个问题。
如果能帮助我解决这个思维障碍,将不胜感激。

你的结构体中允许循环吗? - Grzenio
不,这种情况下没有必要。 - Steve Brouillard
1个回答

11

假设您不介意对树进行递归,并且假设该列表始终非空并且没有循环:

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

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

你可能需要将其重命名,以便清楚地表明它是子条目的总计,而不仅仅是直接子级。


一如既往。感谢您快速而有用的回复。 - Steve Brouillard
1
@JonSkeet 你能解释一下为什么在SubEntryCount getter中需要1+吗? - Jamaxack
@Jamaxack:我相信OP想要包括项目本身,基本上是这样。但是很难记得我5年半前的确切理由 :) - Jon Skeet

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接