2010-03-09 80 views
10

這個問題看起來可能微不足道,乍一看也很愚蠢,但它遠不止於此。.NET將簡單數組轉換爲列表泛型

我有任何類型的數組TT[]),我想將它轉換爲List通用(List<T>)。除了創建通用列表,遍歷整個數組並添加列表中的元素之外,還有其他什麼方法嗎?

現狀:

string[] strList = {"foo","bar","meh"}; 
List<string> listOfStr = new List<string>(); 
foreach(string s in strList) 
{ 
    listOfStr.Add(s); 
} 

我的理想狀況:

string[] strList = {"foo","bar","meh"}; 
List<string> listOfStr = strList.ToList<string>(); 

或者:

string[] strList = {"foo","bar","meh"}; 
List<string> listOfStr = new List<string>(strList); 

我suggestin g最後2個方法名稱,因爲我認爲編譯器或CLR可以對整個操作進行一些優化,如果它需要內置。

P.S:我不是在談論ArrayArrayList類型

回答

23

如果我正確理解你的問題,你的代碼段的其中一個將會工作。在C#中,字符串需要用雙引號括起來,而不是單個。

string[] strList = {"foo","bar","meh"}; 
List<string> listOfStr = new List<string>(strList); 
+0

是啊,我做這一切的時候......嗯,有時。 – 2010-03-09 10:51:55

+0

抱歉,報價錯誤。我現在修好了。 – 2010-03-09 11:03:21

+0

這不需要LINQ,是最簡單的技術。 – softveda 2010-03-09 11:14:06

10

如果引用System.Linq,您可以鍵入:

string[] strList = {'foo','bar','meh'}; 
List<string> listOfStr = strList.ToList(); 

完全像你想。

第二種語法也應該工作。

4

用途:

using System.Linq; 

string[] strList = {'foo','bar','meh'}; 
List<string> listOfStr = strList.ToList(); 
4
object[] array = new object[10]; 
List<object> list = array.ToList(); 

方法ToList是LINQ的方法。你需要添加

using System.Linq; 
1

你真的需要一個List,還是IList會爲你工作?因爲CLR(有特殊代碼)陣列的支持鑄造泛型集合接口,簡單地說:

string[] strList = {"foo","bar","meh"}; 
IList<string> listOfStr = (IList<string>)strList;