Antworten:
Das Problem ist, dass Sie anrufen, List<T>.Reverse()
was zurückkehrt void
.
Sie könnten entweder tun:
List<string> names = "Tom,Scott,Bob".Split(',').ToList<string>();
names.Reverse();
oder:
IList<string> names = "Tom,Scott,Bob".Split(',').Reverse().ToList<string>();
Letzteres ist teurer, da das Umkehren eines beliebigen IEnumerable<T>
Objekts das Puffern aller Daten und das anschließende Ausgeben aller Daten umfasst - während List<T>
das Umkehren "an Ort und Stelle" erfolgen kann. (Der Unterschied besteht darin, dass die Enumerable.Reverse<T>()
Erweiterungsmethode anstelle der List<T>.Reverse()
Instanzmethode aufgerufen wird.)
Noch effizienter könnten Sie verwenden:
string[] namesArray = "Tom,Scott,Bob".Split(',');
List<string> namesList = new List<string>(namesArray.Length);
namesList.AddRange(namesArray);
namesList.Reverse();
Auf diese Weise wird vermieden, dass Puffer mit einer unangemessenen Größe erstellt werden - auf Kosten von vier Anweisungen, bei denen eine ausgeführt wird ... Wie immer sollten Sie die Lesbarkeit im tatsächlichen Anwendungsfall gegen die Leistung abwägen.
Mir ist klar, dass diese Frage ziemlich alt ist, aber ich hatte ein ähnliches Problem, außer dass in meiner Zeichenfolge Leerzeichen enthalten waren. Für diejenigen, die wissen müssen, wie man eine Zeichenfolge mit mehr als nur Kommas trennt:
string str = "Tom, Scott, Bob";
IList<string> names = str.Split(new string[] {","," "},
StringSplitOptions.RemoveEmptyEntries);
Die StringSplitOptions entfernen die Datensätze, die nur ein Leerzeichen ...
List<string> names = "Tom,Scott,Bob".Split(',').Reverse().ToList();
Dieser funktioniert.
Versuche dies:
List<string> names = new List<string>("Tom,Scott,Bob".Split(','));
names.Reverse();
Was Sie hier vermissen, ist, dass .Reverse () eine ungültige Methode ist. Es ist nicht möglich, das Ergebnis von .Reverse () einer Variablen zuzuweisen. Sie können jedoch die Reihenfolge ändern, um Enumerable.Reverse () zu verwenden und Ihr Ergebnis zu erhalten
var x = "Tom,Scott,Bob".Split(',').Reverse().ToList<string>()
Der Unterschied besteht darin, dass Enumerable.Reverse () eine IEnumerable <T> zurückgibt, anstatt eine ungültige Rückgabe zu sein
Wenn du es versuchst
Folgendes sollte funktionieren:
string str = "Tom Cruise, Scott, ,Bob | at";
IEnumerable<string> names = str
.Split(new char[]{',', '|'})
.Where(x=>x!=null && x.Trim().Length > 0)
.Select(x=>x.Trim());
Ausgabe
Jetzt können Sie natürlich die Reihenfolge umkehren, wie andere vorgeschlagen haben.