2013-04-24 21 views
7

próbuję powrócić tę kolekcję w funkcji:konwertować EnumerableRowCollection <string> do listy <string>

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

rzuca ten błąd:

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

Jaki jest najlepszy sposób, aby powrócić taką kolekcję?

+1

Dlaczego zignorować moje pytanie? – Meidi

Odpowiedz

16

Od EnumerableRowCollection<TRow> realizuje IEnumerable<T> można po prostu dodać ToList() na koniec:

using System.Linq; 

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

lub alternatywnie

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

add .ToList() zgłasza ten wyjątek: – Meidi

+0

"System.Data.EnumerableRowCollection " nie zawiera definicji "ToList" ani metody rozszerzającej "ToList" akceptującej pierwszy argument typu "System.Data.EnumerableRowCollection " można znaleźć (czy brakuje dyrektywy użycia lub odniesienia do zestawu?) – Meidi

+7

@Meidi - Musisz dodać dyrektywę 'using System.Linq;' do górnej części pliku. – Lee

5

Trzeba użyć .ToList() że przekształca go w liście, więc spróbować czegoś takiego.

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