2009-05-08 13 views
1
Dim tenItem = From t In _InvalidFeeList _ 
         From i In ItemCount _ 
         Where t.FeeCode <> i.FeeCode _ 
         Order By t.Description _ 
         Ascending Take (10) 


     Dim feeList As List(Of AccessorialFee) = tenItem.ToList() 

Ich erhalte „konvertieren kann nicht zu System.generic.list“ Fehler. Ich sehe überall nach diesem Fehler und es scheint, dass mein Code zum Beispiel funktionieren sollte hereLinq zum Objekt: ToList kann nicht auf generische Liste konvertieren

Ich verstehe es nicht. Kann mir jemand sagen, wo ich falsch lag?

bearbeiten: Ich denke, ich sollte erklären, was ich hier versuche. Ich möchte zwei Objektlisten vergleichen und das Objekt aus der InvalidFeeList auswählen, wenn der FeeCode ungleich dem Objekt in ItemCount FeeCode ist und die ersten 10 Objekte aus der InvalidFeeList übernehmen.

Antwort

3

Das Problem ist, dass Sie zwei haben "From" Klauseln, so ist das Ergebnis nicht nur der Typ der ursprünglichen Sammlung. Es ist einfach, wenn auch zu beheben - nur einen Vorsprung am Ende hinzufügen:

Dim tenItem = From t In _InvalidFeeList _ 
       From i In ItemCount _ 
       Where t.FeeCode <> i.FeeCode _ 
       Order By t.Description _ 
       Ascending Take (10) _ 
       Select t ' This is the new line ' 

Dim feeList As List(Of AccessorialFee) = tenItem.ToList() 

EDIT: Sind Sie Elemente zu finden, in _InvalidFeeList deren FeeCode versuchen, ist nicht in jeder Artikel in ItemCount? Wenn ja, dann schlage ich vor, diese Änderung:

Dim feeCodes = From i In ItemCount Select i.FeeCode 
Dim feeCodeSet = new HashSet(Of FeeCodeType)(feeCodes) 

Dim tenItem = From t in _InvalidFeeList 
       Where Not feeCodeSet.Contains(t.FeeCode) 
       Order By t.Description _ 
       Ascending Take (10) 
Dim feeList As List(Of AccessorialFee) = tenItem.ToList() 

Wie Sie sehen können, habe ich nicht wissen, welche Art von FeeCode und VB ist nicht gerade meine Stärke, aber ich hoffe, dass Sie die allgemeine Idee. Dieser Vorschlag geht davon aus, dass Sie LINQ to Objects verwenden. Wenn Sie LINQ to SQL verwenden, bin ich mir nicht sicher, wie Sie das am besten tun können. Beachten Sie, dass wir die Select-Klausel für tenItem nicht mehr benötigen, da es sich jetzt nur um eine einzelne Sammlung handelt.

+0

Das war es. Vielen Dank. – Jack

+0

Ein Problem, die ausgewählte t haben den gleichen Feedcode wie ich in ItemCount. Es hat nicht das andere Objekt in _InvalidFeeList ausgewählt – Jack

+0

Der gleiche Code wie * which * ich? Sie fügen sich effektiv gegen * all * die Werte von i in ItemCount ein. Wenn es in ItemCount zwei verschiedene Werte für FeeCode gibt, erhalten Sie jedes t in _InvalidFeeList_, möglicherweise mehrere Male. Was versuchst du wirklich? –

2

_InvalidFeeList ist nicht vom Typ List (Of AccessorialFee)

[Bearbeiten] Dieses versuchen und einen Haltepunkt hinzufügen und eine Uhr:

Dim tenItem = (From t In _InvalidFeeList _ 
         From i In ItemCount _ 
         Where t.FeeCode <> i.FeeCode _ 
         Order By t.Description _ 
         Ascending Take (10)).ToList().GetType() 
Verwandte Themen