Método para contar todos os itens na lista de objetos hierárquica
Pergunta
Eu tenho uma classe simples definida como:
public class MyClass
{
//Some properties
public List<MyClass> SubEntries { get; set; }
//Some more properties
}
Em outra classe Eu tenho uma lista do tipo acima. No momento, estou tendo um bloqueio mental sério. Eu só preciso itereate através da lista e contar todas as ocorrências de MyClass. Desde a propriedade Subentries pode conter 0 ou mais entradas que se podem conter 0 ou mais entradas, parece-me que eu preciso de algum tipo de método recursice, a menos que LINQ fornece um mecanismo para fazer isso.
Qualquer ajuda liberar este jam log mentais seria apreciada.
Solução
Assumindo que você não se importa recursivo para baixo da árvore, e assumindo a lista é sempre não-nulo e não tem ciclos:
public class MyClass
{
public List<MyClass> SubEntries { get; set; }
public int SubEntryCount
{
get { return 1 + SubEntries.Sum(x => x.SubEntryCount); }
}
}
Você pode querer mudar o nome para que seja claro que é uma Total contagem de sub-entradas, não apenas filhos imediatos.