Trasmetti List<int> a List<string> in .NET 2.0
Domanda
Puoi lanciare a List<int>
A List<string>
in qualche modo?
So che potrei scorrere e .ToString() la cosa, ma un cast sarebbe fantastico.
Sono in C# 2.0 (quindi no LINQ).
Soluzione
.NET 2.0 ha il ConvertAll
metodo in cui è possibile passare una funzione di conversione:
List<int> l1 = new List<int>(new int[] { 1,2,3 } );
List<string> l2 = l1.ConvertAll<string>(delegate(int i) { return i.ToString(); });
Altri suggerimenti
Aggiornato per il 2010
List<int> l1 = new List<int>(new int[] { 1,2,3 } );
List<string> l2 = l1.ConvertAll<string>(x => x.ToString());
C# 2.0 è in grado di farlo List<T>.Convert
?Se è così, penso che la soluzione migliore sarebbe quella di usarlo con un delegato:
List<int> list = new List<int>();
list.Add(1);
list.Add(2);
list.Add(3);
list.Convert(delegate (int i) { return i.ToString(); });
Qualcosa del genere.
Vota la risposta di Glenn, che probabilmente è il codice corretto ;-)
Non saresti in grado di lanciarlo direttamente poiché non esiste alcun cast esplicito o implicito da int a string, lo farebbe Avere essere un metodo che coinvolge .ToString() come: -
foreach (int i in intList) stringList.Add(i.ToString());
Modificare - o come altri hanno sottolineato in modo piuttosto brillante, usa intList.ConvertAll(delegate(int i) { return i.ToString();});, tuttavia chiaramente devi ancora utilizzare .ToString() ed è una conversione anziché un cast.
Puoi usare:
List<int> items = new List<int>(new int[] { 1,2,3 } );
List<string> s = (from i in items select i.ToString()).ToList();
Devi costruire una nuova lista.Le rappresentazioni dei bit sottostanti di List<int>
E List<string>
sono completamente incompatibili: su una piattaforma a 64 bit, ad esempio, i singoli membri non hanno nemmeno le stesse dimensioni.
Teoricamente è possibile trattare a List<string>
come un List<object>
- questo ti porta negli entusiasmanti mondi della covarianza e della controvarianza e non è attualmente supportato da C# o VB.NET.
result = listOfInt.Select(i => i.ToString(CultureInfo.InvariantCulture)).ToList()
sostituisci i parametri result e listOfInt con i tuoi parametri