Méthode de compter tous les éléments de la liste d'objets hiérarchique
Question
J'ai une simple classe définie comme:
public class MyClass
{
//Some properties
public List<MyClass> SubEntries { get; set; }
//Some more properties
}
Je Dans une autre classe une liste du type ci-dessus. En ce moment, je vais avoir un bloc mental grave. Je dois juste itereate la liste et compter toutes les occurences de MyClass. Étant donné que la propriété peut contenir 0 sous-entrées ou plusieurs entrées qui peuvent se contenir 0 ou plusieurs entrées, il me semble que je besoin d'une sorte de méthode recursice, à moins que LINQ fournit un mécanisme pour le faire.
Toute aide libérant cette embâcle mentale serait apprécié.
La solution
En supposant que vous ne me dérange pas récursion l'arbre, et en supposant que la liste est toujours non nul et ne pas cycles:
public class MyClass
{
public List<MyClass> SubEntries { get; set; }
public int SubEntryCount
{
get { return 1 + SubEntries.Sum(x => x.SubEntryCount); }
}
}
Vous pouvez le renommer afin qu'il soit clair, il est un total nombre de sous-entrées, pas d'enfants seulement immédiats.