我需要上述功能,因爲我只能將StringCollection存儲到設置,而不是字符串列表。轉換列表<string>轉換爲StringCollection
如何將List轉換爲StringCollection?
我需要上述功能,因爲我只能將StringCollection存儲到設置,而不是字符串列表。轉換列表<string>轉換爲StringCollection
如何將List轉換爲StringCollection?
如何:
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();
使用List.ToArray()
將List轉換爲數組,您可以使用它來添加值i你的StringCollection
。
StringCollection sc = new StringCollection();
sc.AddRange(mylist.ToArray());
//use sc here.
讀this
下面是一個擴展方法的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;
}
}
我寧願:
Collection<string> collection = new Collection<string>(theList);
只是想知道,被推薦爲什麼會避免中間陣列? – l46kok 2012-08-17 07:43:41
@ l46kok:所有其他條件相同的情況下,建議避免額外的中間拷貝。然而,在這種情況下,考慮到設置集合的典型大小,不清楚哪種方法更有效(由於額外的重新分配)並且可能不重要。 – 2012-08-17 07:45:10
@MarceloCantos:總是?我不會那麼做。第一個代碼顯然比較簡單,考慮到(如你所說),這可能並不重要,我會堅持可能效率更低但更明顯的方法。 – 2012-08-17 07:55:14