Die Sequenz enthält keine Elemente mit LINQ FirstOrDefault
Ich bin immer "Sequenz enthält keine Elemente" mit LINQ FirstOrDefault.
int? locationId = _ctx.m_locations.FirstOrDefault(
l => l.name.ToLower() == countyOrTown.ToLower()
).location_key;
Ich dachte, der ganze Punkt von FirstOrDefault ist, dass es nicht zu einer Ausnahme, wenn es keine Einträge in der Datenbank und nur null zurück?
- Auch so, wie Sie erwarten, dass der Zugang
location_key
erfolgreich, wennnull
zurückgegeben wird? - Was ist der stack-trace?
- Ja, es wird NULL zurückgeben, falls es keine Elemente, und Sie können nicht tun, ein
.location_key
auf einen NULL-Wert!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Da wie du selbst sagst
.FirstOrDefault()
zurückNULL
Wert, müssen Sie zuerst überprüfen für das NULL-und nur, wenn esNOT NULL
dann Zugriff ist es.location_key
Eigenschaft:Sequence contains no elements
und nicht einNullReferenceException
.Dir ist schon klar, dass du versuchst zu berufen, die "location_key" - Eigenschaft auf ein Objekt, möglicherweise wird NULL sein, richtig?
Sind Sie sicher, es wird eine "Sequenz enthält [...]" und nicht ein null-Ausnahme ?
Wenn Ihre Abfrage in der Tat "Standard" (oder null hier) deinen code werfen:
(null).location_key
Test m_locations und countyOrTown für null-Verweis, den ersten! Möglicherweise haben Sie nicht das Objekt instanziiert.
Auch (vermutlich haben Sie dies bereits getan), sollten Sie überprüfen, countyOrTown nicht enthalten eine leere Zeichenfolge ist, und dass keine Tippfehler in den Daten, was nicht passt.