计算包含相同项目列表的项目列表

时间:2015-03-27 00:58:01

标签: c#

假设我有一个包含任意数量项目列表的类。在每个列表中,它可以包含同一类列表的列表。它还包含另一个类的另一个列表。我想计算最后一种类型列表的总数。好的,不清楚。我将提供骨架代码:

public class A
{
    public List<B> bs{ get; set; }

    public int CountCs()
    {

    }
}

public class B
{
    public List<B> Bs{ get; set; }
    public List<C> Cs{ get; set; }
}

public class C
{

}

我想编写CountC函数,以便通过整个A实例得到Cs的总数。我已经玩过递归函数等等但现在我的大脑已经崩溃了。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

让B类计算它自己的C集合。作为工作的一部分,它可以迭代它自己的B集合中的每个B(如果有的话),并且每个那些将返回一个计数,一个又一个... ...

public class B
{
    public List<B> Bs { get; set; }
    public List<C> Cs { get; set; }

    public int TotalCs()
    {
        var subtotal = Bs != null ? Bs.Sum(b => b.TotalCs()) : 0;

        return subtotal + Cs.Count;
    }
}

通过从A:

的实例中调用它来解决它
public class A
{
    public List<B> bs { get; set; }

    public int CountCs()
    {
        return bs.Sum(b => b.TotalCs());
    }
}

最后:

var a = new A();

... // add a bunch of Bs and Cs

var totalCs = a.CountCs();

查看实际操作:https://ideone.com/r1gGnE