Frage

Ich habe eine einfache Klasse bekam wie folgt definiert:

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

In einer anderen Klasse habe ich eine Liste der oben genannten Art. Im Moment habe ich einen schweren psychischen Block. Ich brauche nur durch die Liste itereate und alle Vorkommen von MyClass zählen. Da die Untereinträge Eigenschaft 0 oder mehr Einträge enthalten, die sich 0 oder mehr Einträge enthalten kann, scheint es mir, dass ich eine Art recursice Methode benötigen, es sei denn, LINQ einen Mechanismus, um dies zu tun gibt.

Jede Hilfe dieser mentalen log Stau-Beseitigungs würde geschätzt.

War es hilfreich?

Lösung

Angenommen, Sie nichts dagegen haben den Baum Rekursion nach unten, und die Liste unter der Annahme immer nicht leer ist und keine Zyklen haben:

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

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

Sie können wollen, um sie umzubenennen, so dass es klar ist, es ist ein total Anzahl der Untereinträge, nicht nur unmittelbare Kinder.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top