Necesito la característica anterior porque solo puedo almacenar StringCollection en la configuración, no en la lista de cadenas.Convertir la lista <string> a StringCollection
¿Cómo se convierte una lista en StringCollection?
Necesito la característica anterior porque solo puedo almacenar StringCollection en la configuración, no en la lista de cadenas.Convertir la lista <string> a StringCollection
¿Cómo se convierte una lista en StringCollection?
Cómo sobre:
StringCollection collection = new StringCollection();
collection.AddRange(list.ToArray());
Alternativamente, evitando la matriz intermedia (pero posiblemente con la participación más reasignaciones):
StringCollection collection = new StringCollection();
foreach (string element in list)
{
collection.Add(element);
}
conversión de espalda es fácil con LINQ:
List<string> list = collection.Cast<string>().ToList();
Uso List.ToArray()
que convertirá List a una matriz que puede usar para agregar valores i n su StringCollection
.
StringCollection sc = new StringCollection();
sc.AddRange(mylist.ToArray());
//use sc here.
Leer this
Aquí es un método de extensión para convertir un IEnumerable<string>
a un StringCollection
. Funciona de la misma manera que las otras respuestas, simplemente lo envuelve.
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;
}
}
yo preferiría:
Collection<string> collection = new Collection<string>(theList);
Sólo me preguntaba, ¿por qué se recomienda evitar la gama intermedia? – l46kok
@ l46kok: En igualdad de condiciones, siempre se recomienda evitar copias intermedias adicionales. En este caso, sin embargo, no es obvio qué enfoque es más eficiente (debido a las reasignaciones adicionales) y probablemente no sea importante de todos modos, dado el tamaño típico de una colección de configuraciones. –
@MarceloCantos: ¿Siempre? Yo no iría con eso. El primer código es claramente más simple, y dado que (como dices) probablemente no sea importante, me quedaré con el enfoque posiblemente menos eficiente pero más obvio. –