2009-05-28 14 views
4

内のすべての項目をカウントするために、私は以下のように定義単純なクラスを持っています。現時点では、私は深刻な精神的なブロックを持っています。私はちょうどリストを通してitereateし、MyClassのすべての発生を数える必要があります。 SubEntriesプロパティには0以上のエントリを含む0以上のエントリが含まれる可能性があるので、LINQがこれを行うためのメカニズムを提供していない限り、何らかの再帰メソッドが必要です。メソッドは、階層型のオブジェクトリスト

この精神的なログジャムを解放するための助けをいただければ幸いです。

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

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

それはそれはです明らかだように、あなたはそれを名前を変更することがあります。あなたは、ツリーを下に再帰気にしないと仮定すると、リストを仮定することは常に非nullで、サイクルを持っていない

+0

構造内にサイクルを許可しますか? – Grzenio

+0

いいえ、この場合は必要ありません。 –

答えて

9

合計の直下の子だけでなく、サブエントリの数。

+0

常にそうです。迅速で便利な応答をありがとう。 –

+0

@JonSkeet説明できます:なぜSubEntryCountゲッターに1+が必要ですか? – Jamaxack

+0

@Jamaxack:OPは基本的にアイテム自体を含めると思っていました。しかし、5 1/2年前の私の正確な推論を覚えておくのは難しいです:) –