LastOrDefault findet nicht vorhandene Werte

  • VB.NET
  • .NET 5–6

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von VaporiZed.

    LastOrDefault findet nicht vorhandene Werte

    Servus,

    ich hab heute eine merkwürdige Eigenschaft bei der Methode LastOrDefault gefunden. Er bringt mir dabei nicht vorhandene Werte im Dataset/Datenbank.

    VB.NET-Quellcode

    1. Sub ItemProdukt(item As Updater.productData.ProduktRow)
    2. Debug.WriteLine(item.Nummer)
    3. Dim Preisverlauf = productData.Preisverlauf.LastOrDefault(Function(x) x.ProductID = item.ID, Nothing)
    4. Dim Preis As Decimal
    5. Dim CSVRow = Woocom.CSVImport.LastOrDefault(Function(x) x.SKU = CStr(item.Nummer), Nothing)
    6. If Preisverlauf Is Nothing Then
    7. Preis = 0
    8. Else
    9. Debug.WriteLine(Preisverlauf.Verkauf)
    10. Preis = Preisverlauf.Verkauf
    11. End If
    12. Debug.WriteLine(Preis)
    13. If CSVRow Is Nothing Then
    14. i += 1
    15. Else
    16. CSVRow.Sale_price = Preis
    17. CSVRow.Regular_Price = Preis
    18. End If


    Dabei kommt dann so ein Ergebnis raus:
    1110010024
    61903,60


    Die erste Nummer ist die Artikelnummer, die zweite Nummer ist der Preis. Jedoch, stimmt erstens der Preis nicht und zweitens gibt es diesen Wert generell nicht in der Datenbank.

    Wenn ich jedoch es mit FirstOrDefault durchlaufen lasse, erhalte ich genau den Wert, den ich haben will, bzw. der dafür hinterlegt ist.
    1110010024
    508,12



    Kann mir das jemand erklären, warum ich eig. zwei unterschiedliche Werte erhalte, obwohl dieser identisch sein muss in diesem Test? Es ist nur ein Wert bisher hinterlegt, es werden aber immer mehr Werte und er soll immer den Letzten und nicht den ersten Wert nehmen.

    doppelten Codeblock entfernt ~VaporiZed

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()

    Der Tag war zu lang. Ok, nochmal von vorn: Preisverlauf ist eine Liste von Einzelwerten. Ein Preisverlaufeintrag hat eine ProductID und ein Verkauf - was immer das ist. Wenn FirstOrDefault das Richtige gibt und LastOrDefault das Falsche, dann lass Dir doch erstmal mit Where alle Preisverlaufseinträge mit dieser Artikelnummer zeigen. Vielleicht wird es dann klarer, woher das Ergebnis kommt.

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“ ()