2013-04-24 110 views
7

我試圖在函數返回這個集合:轉換EnumerableRowCollection <string>列出<string>

List<string> codes = (from q in Data.AsEnumerable() select q.Field<string>("START")); 
return codes; 

這將引發錯誤:

Cannot implicitly convert type 'System.Data.EnumerableRowCollection<string>' to 'System.Collections.Generic.List<string>' 

什麼是返回這樣一個集合的最好方法?

+1

爲什麼downvote我的問題? – Meidi 2013-04-24 21:20:18

回答

16

由於EnumerableRowCollection<TRow>實現IEnumerable<T>你可以在末尾添加一個ToList()

using System.Linq; 

List<string> bankCodes = (from q in QueueData.AsEnumerable() select q.Field<string>("START")).ToList(); 

或可替代

List<string> bankCodes = QueueData.AsEnumerable() 
    .Select(r => r.Field<string>("START")) 
    .ToList(); 
+1

添加.ToList()拋出該異常: – Meidi 2013-04-24 21:07:26

+0

「System.Data.EnumerableRowCollection 」不包含關於「ToList」和沒有擴展方法「ToList」接受類型的第一個參數定義「System.Data.EnumerableRowCollection 」能被發現(你是否缺少using指令或程序集引用?) – Meidi 2013-04-24 21:07:45

+7

@Meidi - 您需要在文件的頂部添加一個'using System.Linq;'指令。 – Lee 2013-04-24 21:08:49

5

您需要使用.ToList(),轉變爲列表,以便嘗試這樣的事情。

List<string> bankCodes = (from q in QueueData.AsEnumerable() select q.Field<string>("START")).ToList();