2013-08-22 54 views
1

獲得一個字符串列表,我試圖讓下面的代碼字符串列表清單,我對select讀取得到一個:通過LINQ

無法隱式轉換類型 「系統。 Data.EnumerableRowCollection>」 到 'System.Collections.Generic.List>'

List<List<string>> rows = (from myRow in data.AsEnumerable() 
          select new List<string> {myRow["FirstName"].ToString(), 
           myRow["LastName"].ToString(), 
           myRow["Department"].ToString(), 
           myRow["Birthdate"].ToString(), 
           myRow["Description"].ToString() 
          }); 

我怎樣才能得到一個字符串列表,列表?

回答

5

Linq正在使用枚舉類(IEnumerable)。你需要轉換到一個列表:

List<List<string>> rows = (from myRow in data.AsEnumerable() 
          select new List<string> {myRow["FirstName"].ToString(), 
           myRow["LastName"].ToString(), 
           myRow["Department"].ToString(), 
           myRow["Birthdate"].ToString(), 
           myRow["Description"].ToString() 
          }).ToList(); 
+0

由於這個工程。我真的嘗試過,但我的愚蠢的VS IDE沒有認出它。一旦我點擊Build,IDE就會識別它。 – user1477388

+0

不客氣。甚至比「謝謝」更好:勾選複選標記! :-) – Krumelur

2

方法的語法更簡潔:

List<List<string>> rows = data.AsEnumerable() 
    .Select(r => r.ItemArray.Select(o => o + "").ToList()) 
    .ToList(); 

「半壁江山」 的查詢語法:

rows = (from row in data.AsEnumerable() 
     select row.ItemArray.Select(o => o + "").ToList()) 
     .ToList(); 
+1

較短是的。但更清楚的結果是什麼?依靠。但我喜歡使用ItemArray。 – Krumelur