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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top