Converti lista (di object) in lista (di stringa)

C’è un modo per convertire una List(of Object) in una List(of String) in c # o vb.net senza iterare attraverso tutti gli elementi? (L’iterazione dietro le quinte va bene – voglio solo un codice conciso)

Aggiornamento: il modo migliore è probabilmente solo per fare una nuova selezione

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

o

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

Non ansible senza iterare per build una nuova lista. Puoi avvolgere l’elenco in un contenitore che implementa IList.

È ansible utilizzare LINQ per ottenere una versione valutata pigra di IEnumerable da un elenco di oggetti come questo:

 var stringList = myList.OfType(); 

Questo funziona per tutti i tipi.

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

Se desideri un maggiore controllo sul modo in cui avviene la conversione, puoi utilizzare ConvertAll:

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

Intendi qualcosa di simile?

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

No – se vuoi convertire TUTTI gli elementi di una lista, devi toccare TUTTI gli elementi di quella lista in un modo o nell’altro.

È ansible specificare / scrivere l’iterazione in diversi modi (foreach () ……, o .ConvertAll () o qualsiasi altra cosa), ma alla fine, in un modo o nell’altro, un codice andrà a scorrere su ciascuna di esse elemento e convertirlo.

Marc

Puoi fare la conversione di stringhe mentre viene costruita la lista (di object)? Questo sarebbe l’unico modo per evitare di enumerare l’intera lista dopo la creazione dell’elenco (di object).