web-dev-qa-db-fra.com

Comment convertir la liste <int> en chaîne []?

J'ai besoin d'un moyen simple de convertir un List<int> en un tableau string.

J'ai:

var the_list = new List<int>();
the_list.Add(1);
the_list.Add(2);
the_list.Add(3);

string[] the_array = new string[the_list.Count];
for(var i = 0 ; i < the_array.Count; ++i)
    the_array[i] = the_list[i].ToString();

... qui a l'air d'être très moche pour moi.

Y a-t-il un moyen plus facile?


Remarque: Je recherche un plus facile moyen - pas nécessairement un moyen plus rapide.

16
Nathan Osman

Utilisez LINQ:

string[] the_array = the_list.Select(i => i.ToString()).ToArray();
54
Etienne de Martel

Désolé, je n'ai pas installé .NET sur cette machine, donc totalement non testé:

var theList = new List<int>() { 1, 2, 3 };

var theArray = theList.Select(e => e.ToString()).ToArray();       // Lambda Form
var theArray = (from e in theList select e.ToString()).ToArray(); // Query Form
4
Jörg W Mittag

Je sais que vous avez une bonne réponse, mais vous n'avez pas besoin de LINQ ou de Select. Vous pouvez le faire avec un ConvertAll et une méthode anonyme. Comme ça:

var list = new List<int>();
....
var array = list.ConvertAll( x => x.ToString() ).ToArray(); 

Idée similaire, mais je pense que ce n'est pas linq. au cas où ça compte.

4
Cheeso

La liste a une méthode ToArray (). Cela vous évitera de taper mais ne sera probablement pas plus efficace.

2
Jonathan Wood

Étant donné que votre liste ne comporte qu'un nombre, vous pouvez facilement les convertir en chaîne. Créez simplement une boucle et convertissez ses membres en chaîne.

string[] the_array = new string[the_list.Count];
int i=0;
foreach(var item in the_list)
{
  the_array[i] = item.ToString();
  i++;
}
0
Rouhollah Torshizi