2013-04-24 149 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();