Pergunta

Você pode lançar um List<int> para List<string> de alguma forma?

Eu sei que poderia percorrer e .ToString() a coisa, mas um elenco seria incrível.

Estou em C# 2.0 (então não LINQ).

Foi útil?

Solução

O .NET 2.0 tem o ConvertAll método onde você pode passar uma função de conversor:

List<int> l1 = new List<int>(new int[] { 1,2,3 } );
List<string> l2 = l1.ConvertAll<string>(delegate(int i) { return i.ToString(); });

Outras dicas

Atualizado para 2010

List<int> l1 = new List<int>(new int[] { 1,2,3 } );
List<string> l2 = l1.ConvertAll<string>(x => x.ToString());

O C# 2.0 é capaz de fazer List<T>.Convert?Nesse caso, acho que seu melhor palpite seria usar isso com um 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 nesse sentido.


Vote positivamente na resposta de Glenn, que provavelmente é o código correto ;-)

Você não seria capaz de convertê-lo diretamente, pois não existe conversão explícita ou implícita de int para string, seria ter ser um método envolvendo .ToString() como: -

foreach (int i in intList) stringList.Add(i.ToString());

Editar - ou como outros apontaram de forma bastante brilhante, use intList.ConvertAll(delegate(int i) { return i.ToString();}); no entanto, claramente você ainda precisa usar .ToString() e é uma conversão em vez de uma conversão.

Você pode usar:

List<int> items = new List<int>(new int[] { 1,2,3 } );
List<string> s = (from i in items select i.ToString()).ToList();

Você tem que construir uma nova lista.As representações de bits subjacentes de List<int> e List<string> são completamente incompatíveis – em uma plataforma de 64 bits, por exemplo, os membros individuais nem sequer são do mesmo tamanho.

Teoricamente é possível tratar uma List<string> como um List<object> - isso leva você aos emocionantes mundos da covariância e contravariância e atualmente não é compatível com C# ou VB.NET.

result = listOfInt.Select(i => i.ToString(CultureInfo.InvariantCulture)).ToList()

substitua os parâmetros result e listOfInt pelos seus parâmetros

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top