Metodo per contare tutti gli elementi nell'elenco degli oggetti Hierarchical
Domanda
Ho una semplice classe definita come:
public class MyClass
{
//Some properties
public List<MyClass> SubEntries { get; set; }
//Some more properties
}
In un'altra classe Ho una lista del tipo sopra. Al momento, sto avendo un blocco mentale grave. Ho solo bisogno di itereate l'elenco e contare tutte le occorrenze di MyClass. Dal momento che la proprietà sottovoci può contenere 0 o più voci che a loro volta possono contenere 0 o più voci, mi sembra che ho bisogno di un qualche tipo di metodo recursice, a meno che LINQ fornisce un meccanismo per fare questo.
Qualsiasi aiuto rilasciando questa marmellata di registro mentale sarebbe apprezzato.
Soluzione
Dando per scontato che non si mente recursing l'albero, e supponendo che la lista è sempre non nullo e non ha cicli:
public class MyClass
{
public List<MyClass> SubEntries { get; set; }
public int SubEntryCount
{
get { return 1 + SubEntries.Sum(x => x.SubEntryCount); }
}
}
Si consiglia di rinominarlo in modo che sia chiaro che è un totale numero di sotto-voci, i bambini non solo immediati.