Transmitir Lista<int> a Lista<cadena> en .NET 2.0
Pregunta
¿Puedes lanzar un List<int>
a List<string>
¿de alguna manera?
Sé que podría recorrer y .ToString() la cosa, pero un elenco sería increíble.
Estoy en C# 2.0 (así que no LINQ).
Solución
.NET 2.0 tiene la ConvertAll
método donde puede pasar una función de conversión:
List<int> l1 = new List<int>(new int[] { 1,2,3 } );
List<string> l2 = l1.ConvertAll<string>(delegate(int i) { return i.ToString(); });
Otros consejos
Actualizado para 2010
List<int> l1 = new List<int>(new int[] { 1,2,3 } );
List<string> l2 = l1.ConvertAll<string>(x => x.ToString());
¿C# 2.0 es capaz de hacer List<T>.Convert
?Si es así, creo que lo mejor sería usarlo con un delegado:
List<int> list = new List<int>();
list.Add(1);
list.Add(2);
list.Add(3);
list.Convert(delegate (int i) { return i.ToString(); });
Algo parecido a eso.
Vota a favor de la respuesta de Glenn, que probablemente sea el código correcto ;-)
No podrías convertirlo directamente ya que no existe una conversión explícita o implícita de int a string, sería tener ser un método que involucra .ToString() como: -
foreach (int i in intList) stringList.Add(i.ToString());
Editar - o como otros han señalado de manera bastante brillante, use intList.ConvertAll(delegate(int i) { return i.ToString();});, sin embargo, claramente todavía tienes que usar .ToString() y es una conversión en lugar de una conversión.
Puedes usar:
List<int> items = new List<int>(new int[] { 1,2,3 } );
List<string> s = (from i in items select i.ToString()).ToList();
Tienes que crear una nueva lista.Las representaciones de bits subyacentes de List<int>
y List<string>
son completamente incompatibles: en una plataforma de 64 bits, por ejemplo, los miembros individuales ni siquiera son del mismo tamaño.
Teóricamente es posible tratar una List<string>
como un List<object>
-- esto lo lleva a los apasionantes mundos de la covarianza y la contravarianza, y actualmente no es compatible con C# o VB.NET.
result = listOfInt.Select(i => i.ToString(CultureInfo.InvariantCulture)).ToList()
reemplace el resultado de los parámetros y listOfInt a sus parámetros