LINQ leere Rückgabe

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von Haudruferzappeltnoch.

    LINQ leere Rückgabe

    Hallo,

    Enumerable.Sum macht eine ArgumentNullException wenn das Enumerable Null ist.
    Mein Enumerable erzeuge ich aus einer Query Dim q = From t In Table Where x = 1
    Ist das denn so richtig, dass q null wird, wenn es keinen Eintrag mit x = 1 gibt?

    Weil dann muss ich vor jeder Summe erstmal gucken ob was da ist. If q.Count > 0 Then q.Sum(...) Und dann wird die Query ja zweimal abgefahren.

    Kann man nicht auch ein Enumerable zurückgeben, das quasi leer ist, mit dem Sum aber noch rechnen kann?

    Ich denke ja wieder drüber nach das Sum einfach in Try Catch zu packen. Dann hab ich die query nur einmal aber das ist bestimmt nicht richtig^^

    Viele Grüße
    Es kommt eine Auflistung mit 0 Einträgen raus, aber kein Nothing.


    Haudruferzappeltnoch schrieb:

    Weil dann muss ich vor jeder Summe erstmal gucken ob was da ist. If q.Count > 0 Then q.Sum(...)
    Das würde aber gar nicht klappen, weil eine ArgumentNullException kommen würde, wenn q bei Dir Nothing wäre. Also könntest Du q.Count nicht abfragen.
    Zeig mal bitte einen Screenshot Deiner Exception, damit klar wird, was da wirklich Nothing ist/wird.
    Dein Pseudo(?)Code ist insofern natürlich pseudo, weil ja kein Bezug auf t genommen wird. Also Dim q = From t In Table Where t.x = 1 wäre sinnvoll, aber so wie bei Dir ist x ja ohne Zusammenhang.
    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.
    Jaa, nicht das Objekt von dem ich die Summe bilde war Nothing, sondern das Objekt wo ich die hinschreiben wollte. :/

    VB.NET-Quellcode

    1. Dim row = DS1.DT1.FindByID(1)
    2. row.Spalte1 = q.Sum() 'Da hab ich nur auf die Sum geguckt, weil es nahe lag das q leer sein kann. Aber ich habe keine Zeile angelegt.

    Ein Try Catch hätte mir das auch sofort verraten, dann wäre im Catch der nächste Querschläger drin gewesen^^
    Warum hat If q.Count geklappt? Weil zufällig q wirklich leer war natürlich

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Haudruferzappeltnoch“ ()