none
Linq Verständnisfrage RRS feed

  • Frage

  • Hallo zusammen


    Was ich nicht verstehe ist,
    ich habe diese Code Zeile,
    Dim rowList1 As List(Of ZRFDataSet.ZeitRow) = From rz In _dtZeit.AsEnumerable.ToList
    beim ausführen bekomme ich die
    Fehlermeldung:
    DirectCast(ex,System.InvalidCastException).Message
    Das Objekt des Typs "WhereSelectListIterator`2[Zeiterfassung.ZRFDataSet+ZeitRow,Zeiterfassung.ZRFDataSet+ZeitRow]"
    kann nicht in Typ "System.Collections.Generic.List`1[Zeiterfassung.ZRFDataSet+ZeitRow]" umgewandelt werden.

    Aber es zeigt mir doch immer den Typ "Zeiterfassung.ZRFDataSet+ZeitRow"

    wenn ich diesen Code im Debugger ausführe
    Dim rowList1 = From rz In _dtZeit.AsEnumerable.ToList
    und nach dem Ausführen im ToolTip das Ergebnis anschaue
    wird mir doch genau der Typ "Zeiterfassung.ZRFDataSet.ZeitRow" angezeigt.

    Was ist der Fehler wenn ich schreibe Dim mit As List(Of ZRFDataSet.ZeitRow)

    Dank und Gruss
    Peter

     

    Montag, 26. September 2011 08:40

Antworten

  • Hi Peter,
     

    über die 8te Klasse bin ich raus gekommen. Punkt vor Strich und Klammer ist im Grunde auch klar.

    Ich glaube, das ist Dir noch nicht so richtig klar.

    ( From rz In _dtZeit.AsEnumerable) –> der Enumerator wird durchlaufen und eine Ergebnismenge erzeugt, die dann mit .ToList einer Liste zugewiesen wird.

    _dtZeit.AsEnumerable.Tolist –> es wird eine Liste erzeugt –> From rz In _dtZeit.AsEnumerable.Tolist –> es wird ein Enumerator bereitgestellt, der später für ein Bereitstellen der Elemente genutzt werden kann.

    Dim rowList1 As List(Of ZRFDataSet.ZeitRow) = From rz In _dtZeit.AsEnumerable.ToList –> geht nicht, da ein Enumerator keine Liste ist.

     
    --
    Viele Gruesse
    Peter
    • Als Antwort markiert peter haus Dienstag, 27. September 2011 06:03
    Montag, 26. September 2011 19:08

Alle Antworten

  • = (From rz In _dtZeit.AsEnumerable).ToList
    --
    Viele Gruesse
    Peter
    Montag, 26. September 2011 10:43
  • Danke Peter,

    mit der Klammer geht es.

    Auch so

    =(

    From rz In _dtZeit.AsEnumerable).Where(Function(r) r.idPersonal = _rowPersonal.idPersonal).ToList

    Würdest du mir noch einen Satz schreiben, was die Klammer macht?

    Dank und Grüsse
    Peter

    Montag, 26. September 2011 15:53
  • Hi Peter,
    schau mal im Mathe-Lehrbuch der 8. Klasse nach. Da dürfte erklärt sein, dass mit Klammern die Folge der Berechnungen verändert wird. Die in Klammern eingeschlossenen Ausrücke werden erst berechnet, bevor es außen weitergeht.
     
    --
    Viele Gruesse
    Peter
    Montag, 26. September 2011 17:01
  • Hi Peter,

    über die 8te Klasse bin ich raus gekommen. Punkt vor Strich und Klammer ist im Grunde auch klar.

     Aber der Unterschied ( From rz In _dtZeit.AsEnumerable).Tolist
    zu
     From rz In _dtZeit.AsEnumerable.Tolist
    ist mir noch nicht klar. 
    Wieso die typisierte Zuweisung (zu List (Of) ) ohne Klammer nicht gehklapt .

     

    Gruss Peter

     

     
    Montag, 26. September 2011 17:30
  • Hi Peter,
     

    über die 8te Klasse bin ich raus gekommen. Punkt vor Strich und Klammer ist im Grunde auch klar.

    Ich glaube, das ist Dir noch nicht so richtig klar.

    ( From rz In _dtZeit.AsEnumerable) –> der Enumerator wird durchlaufen und eine Ergebnismenge erzeugt, die dann mit .ToList einer Liste zugewiesen wird.

    _dtZeit.AsEnumerable.Tolist –> es wird eine Liste erzeugt –> From rz In _dtZeit.AsEnumerable.Tolist –> es wird ein Enumerator bereitgestellt, der später für ein Bereitstellen der Elemente genutzt werden kann.

    Dim rowList1 As List(Of ZRFDataSet.ZeitRow) = From rz In _dtZeit.AsEnumerable.ToList –> geht nicht, da ein Enumerator keine Liste ist.

     
    --
    Viele Gruesse
    Peter
    • Als Antwort markiert peter haus Dienstag, 27. September 2011 06:03
    Montag, 26. September 2011 19:08
  • Hallo Peter

    Dir vielen Dank für die ausführliche Darstellung, was da vor sich geht.

    Ich der Form habe ich "durchgeschalten".

    Gruss Peter

    Dienstag, 27. September 2011 06:03