4

次のように定義された単純なクラスがあります。

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

別のクラスでは、上記のタイプのリストがあります。現在、私は深刻な精神的障害を抱えています。リストを繰り返して、MyClassのすべての発生をカウントする必要があります。SubEntriesプロパティには0個以上のエントリを含めることができ、それ自体に0個以上のエントリを含めることができるため、LINQがこれを行うメカニズムを提供しない限り、何らかの再帰メソッドが必要であることに気付きます。

このメンタルログジャムを解放する助けをいただければ幸いです。

4

1 に答える 1

11

ツリーを繰り返して気にしないと仮定し、リストが常にnullでなく、サイクルがないと仮定します。

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

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

直接の子だけでなく、サブエントリの総数であることが明確になるように、名前を変更することをお勧めします。

于 2009-05-28T14:55:05.940 に答える