2010-12-14 9 views
0

Ich habe ein IEnumerable-Objekt, wobei Foo eine Zeichenfolgeneigenschaft namens "Name" hat. Gibt es eine einfache LINQ-Anweisung, mit der ich eine Sammlung von Strings aus dieser Enumeration für diese Namen zurückgeben kann?Konvertieren Sie eine Auflistung von Objekten mit einer Zeichenfolgeneigenschaft in eine Enumeration dieser Zeichenfolgen mithilfe von LINQ

z.B.

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

Ich möchte ein IEnumerable zurückzuversetzen 'First' enthält, 'zweiten' und 'dritten'

Howdoyadoozat?

Antwort

2

Wenn IEnumerable Ihre erste Liste aufgerufen wird, das wird es tun:

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

Bingo! Genau das, was ich wollte. Nur aus Neugierde, wenn es list.select (f => f.Name == "Joe") wäre, hätte das eine Sammlung von Foo-Objekten mit Name gleich "Joe" zurückgegeben (vorausgesetzt, es gab eines oder mehrere, die das getan haben)) Oder würde es stattdessen eine Sammlung von Booleans zurückgeben? Schließlich gibt f.Name eine Zeichenfolge zurück, während f.Name == "Joe" einen booleschen Wert zurückgibt, also bin ich mir nicht sicher. Das wirft mich ... Ich weiß nicht, was Select zurückgibt. Ich dachte immer, es würde eine Sammlung von 'fs zurückgeben, aber du hast es einfach anders bewiesen. – MarqueIV

+1

list.Select (f => f.Name == "Joe") würde ein IEnumerable von Bools zurückgeben, wenn Sie nur die Foos mit dem Namen "Joe" möchten, die Sie listen wollen. Wo (f => f.Name == "Joe") und wenn Sie nur die Strings wollen, die gleich "Joe" sind, wollen Sie list.Where (f => f.Name == "Joe"). Wählen Sie (f => f.Name) –

+0

Und deshalb habe ich abgestimmt Sie! Genial! Das macht jetzt viel mehr Sinn und ist völlig klar. Es sind ziemlich einfach verkettete Funktionen. Awesomage! Vielen Dank! – MarqueIV

Verwandte Themen