2010-11-04 7 views

Répondre

6
var peoplesDogs = people.SelectMany(p => p.Dogs); 
0
var peopleDogs = people.Select(p => p.Dogs) 

Modifier

Le haut créent un IEnumerable<IEnumerable<Dog>> mais apparemment ce qui est nécessaire est juste IEnumerable<Dog>.

Comme dans la réponse de LukeH, vous devez utiliser SelectMany pour aplatir:

var peopleDogs = people.SelectMany(p => p.Dogs) 
+0

-1 pour la même raison que la réponse de John Sheehan était à l'origine erronée. Cela doit être aplati, généralement avec SelectMany selon la réponse de LukeH et la réponse de John Sheehan. Je comprends que cela est dû à une modification de la question, mais c'est toujours faux pour la question actuelle - je suggère de la supprimer. –

+0

la question originale n'a pas indiqué qu'il était aussi IEnumerable –

1
var peoplesDogs = from p in people 
        from d in p.Dogs 
        select d; 
+0

il a changé la question –

+0

@John: Assez juste ... doit avoir été rapide :) –

+0

puis-je avoir mes deux points de retour? à moins que celui-ci ne soit également cassé, je devinais –

0

vous pouvez également faire

var peoplesDogs = from p in people 
        from d in p.Dogs 
        select d; 

qui a le même effet que:

var peoplesDogs = people.SelectMany(p => p.Dogs) 
Questions connexes