Gibt es eine Möglichkeit, a in c # oder vb.net List(of Object)
in a List(of String)
umzuwandeln, ohne alle Elemente zu durchlaufen? (Hinter den Kulissen ist die Iteration in Ordnung - ich möchte nur prägnanten Code)
Update: Der beste Weg ist wahrscheinlich nur eine neue Auswahl
myList.Select(function(i) i.ToString()).ToList();
oder
myList.Select(i => i.ToString()).ToList();
List<object>
, diestring
nur Objekte enthält , und Sie möchtenList<string>
stattdessen eine dieser Objekte erhalten. Die Frage ist unklar, was die Eingabe ist; in Abhängigkeit von der Eingangsspezifikation und Ihrem Ziel, können Sie auswählen möchtenOfType<string>
,Cast<string>()
oderSelect(...)
.Dies funktioniert für alle Typen.
List<object> objects = new List<object>(); List<string> strings = objects.Select(s => (string)s).ToList();
quelle
Wenn Sie mehr Kontrolle darüber haben möchten, wie die Konvertierung erfolgt, können Sie ConvertAll verwenden:
var stringList = myList.ConvertAll(obj => obj.SomeToStringMethod());
quelle
Du meinst so etwas?
List<object> objects = new List<object>(); var strings = (from o in objects select o.ToString()).ToList();
quelle
var userIDsSource = (from r in MigrationSession.UsersSource select r.UserID).ToList();
Nein - Wenn Sie ALLE Elemente einer Liste konvertieren möchten , müssen Sie ALLE Elemente dieser Liste auf die eine oder andere Weise berühren .
Sie können die Iteration auf verschiedene Arten angeben / schreiben (foreach () ...... oder .ConvertAll () oder was auch immer), aber am Ende wird auf die eine oder andere Weise ein Code über jeden einzelnen iterieren Element und konvertieren Sie es.
Marc
quelle
Können Sie die Zeichenfolgenkonvertierung durchführen, während die Liste (des Objekts) erstellt wird? Nur so kann vermieden werden, dass die gesamte Liste nach dem Erstellen der Liste (des Objekts) aufgelistet wird.
quelle