84 votes

Convertir la liste (d'objet) en liste (de chaîne)

Existe-t-il un moyen de convertir un List(of Object) en un List(of String) en c # ou vb.net sans parcourir tous les éléments? (Dans les coulisses, l'itération est bonne - je veux juste un code concis)

Mise à jour: le meilleur moyen est probablement de faire une nouvelle sélection

 myList.Select(function(i) i.ToString())
 

ou

 myList.Select(i => i.ToString());
 

92voto

Mehrdad Afshari Points 204872

Pas possible sans itérer pour construire une nouvelle liste. Vous pouvez envelopper la liste dans un conteneur qui implémente IList.

Vous pouvez utiliser LINQ pour obtenir une version d'évaluation paresseuse de IEnumerable<string> partir d'une liste d'objets comme celle-ci:

 var stringList = myList.OfType<string>();
 

60voto

Cela fonctionne pour tous les types.

 List<object> objects = new List<object>();
List<string> strings = objects.Select(s => (string)s).ToList();
 

26voto

Daniel Schaffer Points 14707

Si vous voulez plus de contrôle sur la manière dont la conversion a lieu, vous pouvez utiliser ConvertAll:

 var stringList = myList.ConvertAll(obj => obj.SomeToStringMethod());
 

12voto

ctacke Points 53946

Tu veux dire quelque chose comme ca?

 List<object> objects = new List<object>();
var strings = (from o in objects
              select o.ToString()).ToList();
 

3voto

marc_s Points 321990

Non - si vous voulez convertir TOUS les éléments d'une liste, vous devez toucher TOUS les éléments de cette liste d'une manière ou d'une autre.

Vous pouvez spécifier / écrire l'itération de différentes manières (foreach () ......, ou .ConvertAll () ou autre), mais à la fin, d'une manière ou d'une autre, un code va itérer sur chaque élément et le convertir.

Marc

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