【问题标题】:Method to count all items in Hierachical object list计算分层对象列表中所有项目的方法
【发布时间】:2010-10-29 14:33:08
【问题描述】:

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

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

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

任何帮助释放这个心理日志堵塞将不胜感激。

【问题讨论】:

  • 你的结构中允许循环吗?
  • 不,在这种情况下不需要。

标签: c# c#-3.0 recursion hierarchy


【解决方案1】:

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

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

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

您可能想要重命名它,以便清楚地知道它是子条目的总数,而不仅仅是直系子条目。

【讨论】:

  • 一如既往。感谢您的快速而有用的回复。
  • @JonSkeet 你能解释一下:为什么我们在 SubEntryCount getter 中需要 1+?
  • @Jamaxack:我相信 OP 基本上想要包含项目本身。但是很难记住我 5 1/2 年前的确切推理:)
猜你喜欢
  • 2020-04-10
  • 2010-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-20
  • 2017-06-25
  • 2016-03-03
  • 1970-01-01
相关资源
最近更新 更多