¿Se puede emitir List<int>
a List<string>
de alguna manera?Cast lista <int> a la lista <string> en .NET 2.0
Sé que podría recorrer y .ToString() la cosa, pero un elenco sería increíble.
Estoy en C# 2.0 (entonces no LINQ).
¿Se puede emitir List<int>
a List<string>
de alguna manera?Cast lista <int> a la lista <string> en .NET 2.0
Sé que podría recorrer y .ToString() la cosa, pero un elenco sería increíble.
Estoy en C# 2.0 (entonces no LINQ).
.NET 2.0 tiene el método ConvertAll
donde se puede pasar de 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(); });
¿Es C# 2.0 capaz de hacer List<T>.Convert
? Si es así, creo que lo mejor será utilizarlo 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 en esa línea.
respuesta de Upvote Glenn, que es probablemente el código correcto ;-)
Usted tiene que construir 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 no tienen el mismo tamaño.
Teóricamente es posible tratar List<string>
como List<object>
- esto lo lleva a los emocionantes mundos de la covarianza y la contravarianza, y actualmente no es compatible con C# o VB.NET.
[@Curt] (http://stackoverflow.com/questions/44942/cast-listint-to-liststring#44950):> Teóricamente es posible tratar > una lista
Usted no sería capaz de lanzar directamente como molde sin explícita o implícita que existe de int a string, sería tiene que ser un método que implica .ToString(), tales como: -
foreach (int i in intList) stringList.Add(i.ToString());
Editar - o como otros han señalado de manera brillante, use intList.ConvertAll (delegate (int i) {return i.ToString();}) ;, sin embargo, claramente todavía tiene que usar .ToString() y es un conversión en lugar de un elenco.
La existencia de un elenco entre los tipos genéricos no tiene nada que ver con la capacidad de emitir entre la proyección.IE, incluso si 'int' fue convertible implícita o explícitamente a' cadena', eso no significa que 'List
actualizada para 2010
List<int> l1 = new List<int>(new int[] { 1,2,3 });
List<string> l2 = l1.ConvertAll<string>(x => x.ToString());
¡Gracias! Esto me ahorró un montón de tiempo –
La expresión allí no funcionará en .NET 2.0, ¿o sí? –
No, las lambdas se introdujeron en C# 3.0 por lo que esto no funcionará en 2.0. – Luke
Se puede utilizar:
List<int> items = new List<int>(new int[] { 1,2,3 });
List<string> s = (from i in items select i.ToString()).ToList();
result = listOfInt.Select(i => i.ToString(CultureInfo.InvariantCulture)).ToList()
reemplace los parámetros result y listOfInt a sus parámetros
impresionante, gracias. Después de horas de dolorosa búsqueda, ¡vine aquí! y funcionó como un encanto! : D – iamserious
Estoy de acuerdo. ¡Gracias por compartir! – Junto