Преобразовать список <string> в StringCollection

Мне нужна вышеуказанная функция, потому что я могу хранить StringCollection только в настройках, а не в списке строк.

Как преобразовать List в StringCollection?

Ответ 1

Как насчет:

StringCollection collection = new StringCollection();
collection.AddRange(list.ToArray());

Альтернативно, избегая промежуточного массива (но, возможно, с большим количеством перераспределений):

StringCollection collection = new StringCollection();
foreach (string element in list)
{
    collection.Add(element);
}

Преобразование назад с помощью LINQ:

List<string> list = collection.Cast<string>().ToList();

Ответ 2

Используйте List.ToArray(), который преобразует List в массив, который вы можете использовать для добавления значений в StringCollection.

StringCollection sc = new StringCollection();
sc.AddRange(mylist.ToArray());

//use sc here.

Прочитайте this

Ответ 3

Здесь используется метод расширения для преобразования IEnumerable<string> в StringCollection. Он работает так же, как и другие ответы, просто обертывает его.

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;
    }
}

Ответ 4

Я бы предпочел:

Collection<string> collection = new Collection<string>(theList);