Nein, ich glaube nicht, dass es etwas Einfacheres oder Schnelleres gibt. Das Problem ist, dass du eine List<T> hast und für jedes Element (Item) den Wert einer bestimmten Eigenschaft abfragen willst. Eine solche Möglichkeit, eine Spalte zu extrahieren, gibt es meines Wissens in keiner Collection.
Du könntest lediglich eine solche Methode allgemein definieren (vielleicht als Extension-Methode), der du eine beliebige List<T> mit dem Namen und Typ U einer Eigenschaft übergibst und eine List<U> zurückbekommst. Aber das lohnt sich nur, wenn man das häufiger benötigt.
In deinem Fall kannst du den Umweg über List<string> sparen und direkt in ein String-Array kopieren, weil du durch countries die Anzahl der Strings bereits kennst:
C#-Quelltext
1: 2: 3: 4: 5: 6:
| string[] test = new string[countries.Count]; for(int x1 = 0; x1 < countries.Count, x1++) { test[x1] = countries[x1].Hauptstadt; } textbox.AutoCompleteCustomSource.AddRange(test); |
Gruß Jürgen