Est-il possible 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()).ToList();
ou
myList.Select(i => i.ToString()).ToList();
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 évaluée paresseuse de IEnumerable<string>
d'une liste d'objets comme celle-ci:
var stringList = myList.OfType<string>();
Cela fonctionne pour tous les types.
List<object> objects = new List<object>();
List<string> strings = objects.Select(s => (string)s).ToList();
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());
Tu veux dire quelque chose comme ca?
List<object> objects = new List<object>();
var strings = (from o in objects
select o.ToString()).ToList();
Non - si vous voulez convertir TOUS éléments d'une liste, vous devrez toucher TOUT é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
Pouvez-vous faire la conversion de chaîne pendant la construction de la liste (d'objet)? Ce serait le seul moyen d'éviter d'énumérer toute la liste après la création de la liste (d'objet).