Você pode lançar um List<int>
para de List<string>
alguma forma?
Eu sei que poderia fazer um loop e .ToString () a coisa, mas um elenco seria incrível.
Estou em C # 2.0 (sem LINQ ).
.NET 2.0 tem o ConvertAll
método pelo qual 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(); });
Atualizado 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()
é compilada para o mesmo tipo de IL que estádelegate(int x) { return x.ToString(); }
neste caso, o importante é ter um compilador C # (versão C #) que saiba o que=>
é. A estrutura e o tempo de execução (versão .NET) não precisam de recursos especiais para isso, então .NET 2.0 está bem aqui.<string>
e ainda funciona. Simplesmentel1.ConvertAll(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:Algo nesse sentido.
Vote positivamente na resposta de Glenn, que provavelmente é o código correto ;-)
fonte
Você pode usar:
fonte
Você não seria capaz de convertê-lo diretamente, pois não existe conversão explícita ou implícita de int para string, teria que ser um método envolvendo .ToString (), como: -
Editar - ou como outros apontaram brilhantemente, use intList.ConvertAll (delegate (int i) {return i.ToString ();}) ;, no entanto, claramente você ainda tem que usar .ToString () e é uma conversão em vez de um elenco.
fonte
int
fosse implícita ou explicitamente conversível parastring
, isso não significa queList<int>
tenha uma conversão implícita ou explícita paraList<string>
.Você tem que construir uma nova lista. As representações de bits subjacentes
List<int>
eList<string>
são completamente incompatíveis - em uma plataforma de 64 bits, por exemplo, os membros individuais não têm nem mesmo o mesmo tamanho.É teoricamente possível tratar a
List<string>
como aList<object>
- isso leva você aos mundos emocionantes da covariância e da contravariância, e não é atualmente suportado por C # ou VB.NET.fonte
result = listOfInt.Select(i => i.ToString(CultureInfo.InvariantCulture)).ToList()
substitua os parâmetros result e listOfInt para seus parâmetros
fonte