¿Puedes lanzar un List<int>to de List<string>alguna manera?
Sé que podría recorrer y .ToString () la cosa, pero un elenco sería increíble.
Estoy en C # 2.0 (por lo que no LINQ ).
.NET 2.0 tiene el ConvertAllmétodo en el que 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(); });
Actualizado para 2010
List<int> l1 = new List<int>(new int[] { 1,2,3 } );
List<string> l2 = l1.ConvertAll<string>(x => x.ToString());
x => x.ToString()se compila con el mismo tipo de IL quedelegate(int x) { return x.ToString(); }en este caso, lo importante es tener un compilador de C # (versión de C #) que sepa qué=>es. El marco y el tiempo de ejecución (versión .NET) no necesitan características especiales para esto, por lo que .NET 2.0 está bien aquí.<string>y todavía funciona. Haciéndolo justol1.ConvertAll(x => x.ToString());¿C # 2.0 puede hacerlo
List<T>.Convert? Si es así, creo que su mejor suposición sería usar eso con un delegado:Algo en ese sentido.
Vota la respuesta de Glenn, que probablemente sea el código correcto ;-)
fuente
Puedes usar:
fuente
Usted no sería capaz de lanzar directamente ya que no existe conversión explícita o implícita de int a string, sería tiene que ser un método que implica .ToString (), tales como: -
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 tiene que usar .ToString () y es una conversión en lugar de un molde.
fuente
intfuera implícita o explícitamente convertible astring, eso no significa queList<int>tenga una conversión implícita o explícita aList<string>.Tienes que crear una nueva lista. Las representaciones de bits subyacentes de
List<int>yList<string>son completamente incompatibles; en una plataforma de 64 bits, por ejemplo, los miembros individuales ni siquiera tienen el mismo tamaño.En teoría, es posible tratar a
List<string>como aList<object>: esto lo lleva a los emocionantes mundos de la covarianza y la contravarianza, y actualmente no es compatible con C # o VB.NET.fuente
result = listOfInt.Select(i => i.ToString(CultureInfo.InvariantCulture)).ToList()reemplace el resultado de los parámetros y listOfInt a sus parámetros
fuente