2013-04-24 33 views
7

Tôi cố gắng để trở về bộ sưu tập này trong một hàm:chuyển đổi EnumerableRowCollection <string> vào danh sách <string>

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

này ném lỗi:

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

cách tốt nhất để trả lại một bộ sưu tập như vậy là gì?

+1

Tại sao lại downvote câu hỏi của tôi? – Meidi

Trả lời

16

Kể từ EnumerableRowCollection<TRow> thực hiện IEnumerable<T> bạn chỉ có thể thêm một ToList() ở cuối:

using System.Linq; 

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

hoặc cách khác

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

thêm .ToList() ném ngoại lệ này: – Meidi

+0

'System.Data.EnumerableRowCollection ' không chứa định nghĩa cho 'ToList' và không có phương pháp mở rộng 'ToList' chấp nhận đối số đầu tiên của loại 'System.Data.EnumerableRowCollection ' có thể được tìm thấy (bạn đang thiếu một chỉ thị sử dụng hoặc một tham chiếu lắp ráp?) – Meidi

+7

@Meidi - Bạn cần thêm một 'using System.Linq;' chỉ thị vào đầu tệp của bạn. – Lee

5

Bạn cần phải sử dụng .ToList() để đổi ra danh sách vì vậy hãy thử một cái gì đó như thế này.

List<string> bankCodes = (from q in QueueData.AsEnumerable() select q.Field<string>("START")).ToList(); 
Các vấn đề liên quan