2013-04-24 21 views
7

Ich versuche, diese Sammlung in einer Funktion zurückzukehren:konvertieren EnumerableRowCollection <string> zur Liste <string>

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

Dies wirft Fehler:

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

Was ist der beste Weg, eine solche Sammlung zurück?

+1

Warum meine Frage abgelehnt? – Meidi

Antwort

16

Da EnumerableRowCollection<TRow> implementiert IEnumerable<T> Sie können nur eine ToList() am Ende hinzufügen:

using System.Linq; 

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

oder alternativ

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

add .ToList() löst diese Ausnahme aus: – Meidi

+0

'System.Data.EnumerableRowCollection ' enthält keine Definition für 'ToList' und keine Erweiterungsmethode 'ToList', die ein erstes Argument vom Typ 'System.Data.EnumerableRowCollection ' akzeptieren könnte gefunden werden (fehlt eine using-Direktive oder eine Assembly-Referenz?) – Meidi

+7

@Meidi - Sie müssen eine 'using System.Linq;' - Direktive an den Anfang Ihrer Datei hinzufügen. – Lee

5

Sie müssen .ToList() verwenden, um es in die Liste verdeckte so etwas wie dies versuchen.

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