104 votes

Conversion de List<int> en List<string> en .NET 2.0

Pouvez-vous lancer un List<int> a List<string> en quelque sorte ?

Je sais que je peux faire une boucle avec .ToString(), mais une distribution serait géniale.

Je suis en C# 2.0 (donc pas de LINQ ).

157voto

Glenn Slaven Points 15742

.NET 2.0 a le ConvertAll où vous pouvez passer dans une fonction de convertisseur :

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

125voto

Luke Points 1209

Mise à jour pour 2010

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

6 votes

Merci ! Cela m'a fait gagner une tonne de temps

2 votes

Non, les lambdas ont été introduits dans C# 3.0, donc cela ne fonctionnera pas dans 2.0.

0 votes

J'ai constaté qu'il fonctionne avec VS2008 et .NET 2.0, pour autant que vous ayez installé au moins .NET 3.0. voir stackoverflow.com/questions/3341846/

8voto

Erik van Brakel Points 7589

Est-ce que C# 2.0 est capable de faire List<T>.Convert ? Si c'est le cas, je pense que le mieux serait de l'utiliser avec un délégué :

List<int> list = new List<int>();
list.Add(1);
list.Add(2);
list.Add(3);
list.Convert(delegate (int i) { return i.ToString(); });

Quelque chose de ce genre.


Upvotez la réponse de Glenn, qui est probablement le bon code ;-)

7voto

lutecki Points 11

Vous pouvez utiliser :

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

5voto

ljs Points 16511

Il n'est pas possible d'effectuer un cast direct, car il n'existe pas de cast explicite ou implicite de int vers string. ont pour être une méthode impliquant .ToString() comme:-

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

Editar - ou, comme d'autres l'ont souligné avec brio, utiliser intList.ConvertAll(delegate(int i) { return i.ToString() ; }); ;, mais il est clair que vous devez toujours utiliser .ToString() et qu'il s'agit d'une conversion plutôt que d'un cast.

3 votes

L'existence d'un cast entre les types génériques n'a rien à voir avec la possibilité de cast entre la projection. IE, même si int étaient implicitement ou explicitement convertibles en string cela ne veut pas dire que List<int> a une conversion implicite ou explicite en List<string> .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X