2010-08-06 6 views
1

Compte tenu de cette classe:Récupérer tous les enfants de parents []

public class Parent 
{ 
    public Child[] Children {get;set;} 
} 

Et ce tableau:

Parent[] parents; 

Comment puis-je récupérer tous les enfants à partir du tableau des parents LINQ ou autre chose ? Cela semble mauvais:

IList<Child> children = new List<Child>(); 
foreach(var parent in parents) 
    children.AddRange(parent.Children); 

Ou est-ce pas si mal? :-)

Répondre

9

Essayez ceci:

parents.SelectMany(p => p.Children).ToArray() 
+0

Bingo Bango, SelectMany est l'un des handi-dandiest parties de linq. –

+0

Il veut une liste cependant. Vous aurez besoin d'avoir un List.AddRange (parents.SelectMany ...) –

+1

@Joel Etherton: ou juste .ToList() au lieu de .ToArray() :) –

1

Je ne pense pas que la solution que vous proposez dans la question est mauvaise. C'est très lisible et facile à comprendre ce qui se passe. À moins que vous n'ayez une raison de l'optimiser, je n'y vois aucun problème.

Si vous vraiment voulez utiliser LINQ, qui est une autre histoire (et à mon avis parfaitement valable - la plus grande expérience/pratique avec Linq, mieux)

Questions connexes