Liste Des Acteurs<int> à la Liste<string> dans .NET 2.0
Question
Pouvez-vous jeter un List<int>
pour List<string>
en quelque sorte?
Je sais que je pourrais faire une boucle par et .ToString() de la chose, mais un casting serait génial.
Je suis en C# 2.0 (donc pas de LINQ).
La solution
.NET 2.0 ConvertAll
méthode où vous pouvez passer d'une fonction convertisseur:
List<int> l1 = new List<int>(new int[] { 1,2,3 } );
List<string> l2 = l1.ConvertAll<string>(delegate(int i) { return i.ToString(); });
Autres conseils
Mise à jour pour 2010
List<int> l1 = new List<int>(new int[] { 1,2,3 } );
List<string> l2 = l1.ConvertAll<string>(x => x.ToString());
Est C# 2.0 capable de faire List<T>.Convert
?Si oui, je pense que votre meilleure estimation 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 le long de ces lignes.
Upvote Glenn réponse, ce qui est probablement le bon code ;-)
Vous ne pourrez pas directement exprimés comme aucun explicite ou implicite cast existe de int en string, il serait ont pour être une méthode impliquant la .ToString() telles que:-
foreach (int i in intList) stringList.Add(i.ToString());
Modifier - ou comme d'autres l'ont souligné, plutôt brillamment, l'utilisation intList.ConvertAll(delegate(int i) { return i.ToString();}); cependant il est clair que vous devez utiliser .ToString() et c'est une conversion plutôt que d'un plâtre.
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();
Vous avez à construire une nouvelle liste.Le sous-jacent peu de représentations de List<int>
et List<string>
sont totalement incompatibles -- sur une plate-forme 64 bits, par exemple, les membres individuels ne sont même pas de la même taille.
Il est théoriquement possible de traiter un List<string>
en tant que List<object>
-- cela vous met dans l'passionnant mondes de la covariance et la contravariance, et n'est pas actuellement pris en charge par le C# ou VB.NET.
result = listOfInt.Select(i => i.ToString(CultureInfo.InvariantCulture)).ToList()
remplacez les paramètres de résultat et listOfInt à vos paramètres