2010-12-14 53 views
0

J'ai un objet IEnumerable où Foo a une propriété de chaîne appelée 'Name'. Y at-il une instruction LINQ facile qui me permettra de retourner une collection de chaînes de cette énumération pour ces noms?Convertir une collection d'objets avec une propriété de chaîne en une énumération de ces chaînes en utilisant LINQ

par exemple.

IEnumerable<Foo> (which contains...) 
    Foo.Name = First 
    Foo.Name = Second 
    Foo.Name = Third 

Je veux retourner un IEnumerable qui contient 'Première', 'deuxième' et 'troisième'

Howdoyadoozat?

Répondre

2

Si votre initiale IEnumerable est appelée liste, cela fera:

list.Select(f => f.Name); 
+0

Bingo! Exactement ce que je voulais. Juste par curiosité, si cela avait été list.select (f => f.Name == "Joe") cela aurait-il retourné une collection d'objets Foo avec Name égal à "Joe" (en supposant qu'il y en ait un ou plusieurs qui l'aient fait) ou retournerait-il plutôt une collection de booléens? Après tout, f.Nom renvoie une chaîne pendant que f.Nom == "Joe" renvoie un booléen donc je ne suis pas sûr. C'est ce qui me jette ... Je ne sais pas ce que Select retourne. J'ai toujours pensé que ça renvoyait une collection de f, mais tu as juste prouvé le contraire. – MarqueIV

+1

list.Select (f => f.Name == "Joe") retournerait un IEnumerable de bools, si vous vouliez seulement les Foos qui ont le nom "Joe" que vous voulez list.Where (f => f.Name == "Joe") et si vous vouliez seulement les chaînes qui égalent "Joe" vous voulez list.Where (f => f.Name == "Joe"). Sélectionnez (f => f.Name) –

+0

Et c'est pourquoi j'ai voté vous en haut! Impressionnant! Cela fait tellement plus de sens maintenant et est complètement clair. C'est à peu près juste des fonctions chaînées. Awesomage! Merci! – MarqueIV