Wandeln Sie List<int> in List<string> in .NET 2.0 um
Frage
Kannst du einen werfen? List<int>
Zu List<string>
irgendwie?
Ich weiß, ich könnte das Ding durchlaufen und .ToString(), aber eine Besetzung wäre großartig.
Ich bin in C# 2.0 (also nein LINQ).
Lösung
.NET 2.0 verfügt über die ConvertAll
Methode, bei der Sie eine Konverterfunktion übergeben können:
List<int> l1 = new List<int>(new int[] { 1,2,3 } );
List<string> l2 = l1.ConvertAll<string>(delegate(int i) { return i.ToString(); });
Andere Tipps
Aktualisiert für 2010
List<int> l1 = new List<int>(new int[] { 1,2,3 } );
List<string> l2 = l1.ConvertAll<string>(x => x.ToString());
Ist C# 2.0 dazu in der Lage? List<T>.Convert
?Wenn ja, denke ich, dass Ihre beste Vermutung darin besteht, dies mit einem Delegierten zu verwenden:
List<int> list = new List<int>();
list.Add(1);
list.Add(2);
list.Add(3);
list.Convert(delegate (int i) { return i.ToString(); });
Etwas in dieser Richtung.
Stimmen Sie Glenns Antwort positiv ab, was wahrscheinlich der richtige Code ist ;-)
Sie könnten es nicht direkt umwandeln, da es keine explizite oder implizite Umwandlung von int in string gibt haben eine Methode sein, die .ToString() einbezieht, wie zum Beispiel:-
foreach (int i in intList) stringList.Add(i.ToString());
Bearbeiten - oder wie andere ziemlich brillant darauf hingewiesen haben, verwenden Sie intList.ConvertAll(delegate(int i) { return i.ToString();});, allerdings müssen Sie natürlich immer noch .ToString() verwenden und es handelt sich eher um eine Konvertierung als um eine Umwandlung.
Sie können Folgendes verwenden:
List<int> items = new List<int>(new int[] { 1,2,3 } );
List<string> s = (from i in items select i.ToString()).ToList();
Sie müssen eine neue Liste erstellen.Die zugrunde liegenden Bitdarstellungen von List<int>
Und List<string>
sind völlig inkompatibel – auf einer 64-Bit-Plattform beispielsweise sind die einzelnen Mitglieder nicht einmal gleich groß.
Es ist theoretisch möglich, a zu behandeln List<string>
Als ein List<object>
– Dies führt Sie in die aufregenden Welten der Kovarianz und Kontravarianz ein und wird derzeit von C# oder VB.NET nicht unterstützt.
result = listOfInt.Select(i => i.ToString(CultureInfo.InvariantCulture)).ToList()
Ersetzen Sie die Parameter result und listOfInt durch Ihre Parameter