c# immer eine Liste aus einem Feld aus einer Liste
Tut mir Leid wegen der verwirrenden Titel, aber ich didnt finden Sie einen besseren Weg, um zu erklären mein Problem.
Habe ich eine Liste von Objekten, die myList
, nennen wir Sie MyObject
. die Objekte in etwa so Aussehen:
Class MyObject
{
int MYInt{get;set;}
string MYString{get;set;}
}
List<MyObject> myList;
...
Ich bin auf der Suche nach einen schönen/kurzen/fantastischer Weg, um eine List<string>
aus myList
, wo ich bin, nur anhand der MyString
Eigenschaft.
Ich kann dies tun, indem Sie myList.forEach()
, aber ich Frage mich, ob es ist ein schöner Weg,
Dank!!
InformationsquelleAutor edan | 2010-09-01
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mit LINQ:
Zurückgibt
IEnumerable<string>
. Um eineList<string>
fügen Sie einfach einen Anruf zuToList()
:Dann die Ergebnisse Durchlaufen, wie Sie normalerweise würden:
ToList()
. Verwenden Sie nur, wenn Sie müssen, ändern Sie die neue Liste oder einen index in es.Gibt es keine Notwendigkeit für LINQ wenn Ihr input-und output-Listen sind sowohl
List<T>
. Sie können dieConvertAll
Methode statt:.ConvertAll
oder.Select
macht keinen praktischen Unterschied.ConvertAll
arbeiten, wie in meinem Beispiel oben.ConvertAll
ist eine weitere alternative. In der TatConvertAll
wird etwas effizienter als LINQ, weil (ein) es kann kopieren Sie die Daten über den direkten Zugriff auf Arrays anstatt benötigen zu instanziieren und immer wieder aufrufen, Iteratoren, und (b) es kann die Zuordnung der Ziel-Liste, um die richtige Größe zu Beginn eher als dynamisch Größenänderung, wie es geht. (Aber, wie du sagst, diese kleinen performance-Vorteil macht keinen praktischen Unterschied in der die meisten real-Welt Situationen.)Hier Ahmad ' s Antwort mit der integrierten Abfrage-syntax:
Dies könnte auch geschrieben werden: