2012-07-31 69 views
0

我想要做的是將字符串轉換爲使用linq的字符串列表。我嘗試下面的代碼行:將字符串轉換爲列表<string>

value = "one,two,three,four"; 

List<string> arr = value.Split(',').Select(s => s.ToList()); 

但我得到的錯誤:

錯誤1無法隱式轉換類型「System.Collections.Generic.IEnumerable>」到「System.Collections.Generic .LIST」。一個顯式轉換存在(是否缺少強制轉換?)

如果有人可以提供一些幫助,這將是真棒。

+0

可能重複:http://stackoverflow.com/questions/5011467/convert-string-to-liststring-in-one-line – reggie 2012-07-31 13:39:41

回答

10

你好,你可以嘗試用

value.Split(',').ToList(); 
1
value = "one,two,three,four"; 

List<string> arr = value.Split(',').Select(s => s).ToList(); 

或簡單:

List<string> arr = value.Split(',').ToList(); 
3

你每個獨立的數組元素上得到了ToList - 即每個字符串。這調用本身是有效的,因爲string實現IEnumerable<char>,但它意味着你創建一個IEnumerable<List<char>>這是不是你想要的。

我不認爲你需要的Select在所有 - 只需使用:

List<string> arr = value.Split(',').ToList(); 
2

一個列表構造takes an enumerable的:

var arr = new List<string>(value.Split(',')); 

不知道爲什麼人們堅持LINQ擴展一切 ...

+0

我想這是一個品味的問題,但我發現了LINQ版本更具可讀性(無角括號,沒有嵌套的常規括號)。 – jeroenh 2012-07-31 13:41:18

+0

@jeroenh毫無疑問,無論如何擴展方法實現可能使用這個構造函數。我只是覺得很有趣有多少東西是一樣的風格LINQ擴展這些天:-)我會使用或者沒有第二個想法,這對我來說是花一想它是浪費一點點最重要的。 – 2012-07-31 13:42:16

1

即使你不需要選擇,但還是如果你想使用它的ñ它應該是:

List<string> arr = value.Split(',').Select(s => s).ToList(); 

或者你可以簡單地做:

List<string> arr = value.Split(',').ToList(); 
+0

+1顯示帶有選擇的版本,即使不需要。它讓OP比較,看看他們做錯了什麼。 – 2012-07-31 18:41:19

0

你不應該需要選擇:

value = "one,two,three,four"; 

List<string> arr = value.Split(',').ToList(); 
0
string value = "one,two,three,four"; 
List<string> arr = value.Split(',').ToList(); 
0

你並不需要使用LINQ在這裏,而不是你可以簡單地這樣做:

string value = "one,two,three,four"; 
List<string> arr = value.Split(',').ToList();