Ich brauche die obige Funktion, weil ich StringCollection nur Einstellungen, nicht Liste der Zeichenfolgen speichern kann.Konvertieren Liste <string> zu StringCollection
Wie konvertiert man List in StringCollection?
Ich brauche die obige Funktion, weil ich StringCollection nur Einstellungen, nicht Liste der Zeichenfolgen speichern kann.Konvertieren Liste <string> zu StringCollection
Wie konvertiert man List in StringCollection?
Wie wäre:
StringCollection collection = new StringCollection();
collection.AddRange(list.ToArray());
Alternativ die Zwischenmatrix vermieden werden (aber möglicherweise mehr Umschichtungen Beteiligung):
StringCollection collection = new StringCollection();
foreach (string element in list)
{
collection.Add(element);
}
Konvertieren zurück mit LINQ ist einfach:
List<string> list = collection.Cast<string>().ToList();
Verwenden List.ToArray()
, die List in ein Array konvertiert, mit dem Sie Werte hinzufügen können n Ihre StringCollection
.
StringCollection sc = new StringCollection();
sc.AddRange(mylist.ToArray());
//use sc here.
lesen this
Hier ist eine Erweiterung Methode eine IEnumerable<string>
zu einem StringCollection
zu konvertieren. Es funktioniert genauso wie die anderen Antworten, schließt es einfach ein.
public static class IEnumerableStringExtensions
{
public static StringCollection ToStringCollection(this IEnumerable<string> strings)
{
var stringCollection = new StringCollection();
foreach (string s in strings)
stringCollection.Add(s);
return stringCollection;
}
}
Ich würde es vorziehen:
Collection<string> collection = new Collection<string>(theList);
Nur frage mich, warum sollte vermieden Zwischenmatrix zu empfehlen? – l46kok
@ l46kok: Bei sonst gleichen Bedingungen empfiehlt es sich, zusätzliche Zwischenkopien zu vermeiden. In diesem Fall ist es jedoch nicht offensichtlich, welcher Ansatz effizienter ist (aufgrund der zusätzlichen Neuzuweisungen) und wahrscheinlich sowieso nicht wichtig ist, angesichts der typischen Größe einer Einstellungssammlung. –
@MarceloCantos: Immer? Ich würde damit nicht gehen. Der erste Code ist eindeutig einfacher, und da er (wie Sie sagen) wahrscheinlich nicht wichtig ist, würde ich bei dem Ansatz bleiben, der möglicherweise weniger effizient, aber offensichtlicher ist. –