Können Sie werfen ein 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 kein LINQ ).
.NET 2.0 verfügt über die ConvertAll
Methode, mit 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(); });
Aktualisiert für 2010
List<int> l1 = new List<int>(new int[] { 1,2,3 } );
List<string> l2 = l1.ConvertAll<string>(x => x.ToString());
x => x.ToString()
auf dieselbe Art von IL kompiliert ist wiedelegate(int x) { return x.ToString(); }
in diesem Fall, ist es wichtig, einen C # -Compiler (C # -Version) zu haben, der weiß, was=>
ist. Das Framework und die Laufzeit (.NET-Version) benötigen hierfür keine besonderen Funktionen, daher ist .NET 2.0 hier in Ordnung.<string>
und es funktioniert immer noch. Machen Sie es einfachl1.ConvertAll(x => x.ToString());
Kann C # 2.0 das
List<T>.Convert
? Wenn ja, denke ich, wäre Ihre beste Vermutung, dies mit einem Delegierten zu verwenden:Etwas in diese Richtung.
Upvote Glenns Antwort, die wahrscheinlich der richtige Code ist ;-)
quelle
Sie können verwenden:
quelle
Sie können es nicht direkt umwandeln, da keine explizite oder implizite Umwandlung von int in string vorhanden ist. Es müsste sich um eine Methode handeln, die .ToString () umfasst, z. B.: -
Bearbeiten - oder, wie andere ziemlich brillant hervorgehoben haben, verwenden Sie intList.ConvertAll (delegate (int i) {return i.ToString ();}); es ist jedoch klar, dass Sie immer noch .ToString () verwenden müssen und es sich eher um eine Konvertierung als um handelt eine Besetzung.
quelle
int
implizit oder explizit in konvertierbar wärestring
, bedeutet dies nicht, dassList<int>
eine implizite oder explizite Konvertierung in erfolgtList<string>
.Sie müssen eine neue Liste erstellen. Die zugrunde liegenden Bitdarstellungen von
List<int>
undList<string>
sind vollständig inkompatibel - auf einer 64-Bit-Plattform beispielsweise sind die einzelnen Mitglieder nicht einmal gleich groß.Es ist theoretisch möglich, a
List<string>
als zu behandelnList<object>
- dies führt Sie in die aufregenden Welten der Kovarianz und Kontravarianz und wird derzeit von C # oder VB.NET nicht unterstützt.quelle
result = listOfInt.Select(i => i.ToString(CultureInfo.InvariantCulture)).ToList()
Ersetzen Sie die Parameter result und listOfInt durch Ihre Parameter
quelle