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).

War es hilfreich?

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top