Die Methode GetAttendanceListOf(q._RollNumber)
im obigen Code gibt eine Liste von Datensätzen aus der Datenbank oder "null" zurück, wenn für das übergebene "roll-no" keine Datensätze vorhanden sind. Eine linq-Abfrage wird beendet, wenn der Fehler
"Der Wert darf nicht null sein".
Gibt es eine Möglichkeit, diesen Fehler zu behandeln und LINQ zum nächsten Schritt zu springen?
Das Problem besteht darin, Where()
für eine Null-Instanz auszuführen. Mögliche Lösungen:
1) modify GetAttendanceListOf
, um eine leere Liste zurückzugeben, wenn keine Teilnahme (gute Idee im Allgemeinen, als Null-Objekt-Muster ist oft ein Lebensretter, und für die Sammlung ist eine leere Sammlung oft semantisch ähnlich null)
2) Wenn Sie diese Methode nicht steuern, schreiben Sie eine sichere Erweiterungsmethode, die im Fall von null eine leere Liste zurückgibt, z. B.
Dann nenne es:
%Vor%Linq ToList () gibt eine leere Liste zurück, wenn keine Ergebnisse vorliegen. Der Fehler könnte von anderswo kommen.
Ich würde Ihnen empfehlen, Methoden zum Erstellen Ihrer Objekte zu verwenden. Dadurch wird Ihre Abfrage einfacher zu lesen und zu debuggen. Ich würde empfehlen, dass Sie es in mehreren Schritten tun, um zu bestimmen, was null wird und wo genau es nicht ausgeführt wird.
Der Fehler kommt möglicherweise von GetAttendanceListOf (). Wenn Methoden IList oder IEnumerable zurückgeben, sollten Sie eine leere Liste zurückgeben, wenn keine Ergebnisse vorhanden sind. Dadurch wird verhindert, dass Sie jedes Mal validieren, wenn sie null ist oder nicht.
Wie von @Zdeslav Vojkovic vorgeschlagen, ändern Sie GetAttendanceListOf
, um eine leere Liste zurückzugeben, wenn null oder etwas wie:
(Sie könnten es möglicherweise ohne die zusätzlichen Klammern machen)
Tags und Links c# linq select null dynamic-list