Ich habe eine Liste und zwei Tabellen. (Dies ist eine sehr vereinfachte Version des aktuellen Schema, sollte aber für die Frage arbeiten)Linq Join-Abfrage mit linken äußeren Join werfen Objektreferenz nicht gefunden
List_A
FPI
Table_B
FPI_______NI
2_________1
4_________2
TABLE_C
NI_______Name
1_________x
2_________y
Meine Linq-Abfrage:
(from a in List_A
join b in Table_B on a.FPI equals b.FPI into ab
from b in ab.DefaultIfEmpty()
join c in Table_C on b.FI equals c.FI into bc
from c in bc.DefaultIfEmpty()
select new {
FPI = a.FPI,
Name = c?.Name}).ToList();
dieser Code löst eine Ausnahme, dass Object reference not set to an instance of an object.
. Nach einer Menge von Versuch und Experiment, habe ich zu einer Schlussfolgerung, dass in der zweiten Join, wenn ich tue b.FI equals c.FI
, zu diesem Zeitpunkt ist es für die Einträge, für die es keinen Wert in der Tabelle_B ist fehlgeschlagen.
Die erwartete Ausgabe der Abfrage
ABC FPI____NI___Name
1_____null__null
2_____1_____x
3_____null__null
4_____2_____y
I kommt und bin nicht sicher, warum dieser Fehler sein sollte Was wäre die beste Lösung für dieses Problem.
Mögliches Duplikat [Was für eine Nullreferenceexception ist, und wie kann ich es beheben?] (Http://stackoverflow.com/ Fragen/4660142/what-is-a-nullreferenceexception-and-how-do-i-fix-it) – mybirthname
Ich habe das auch getan. Und ich habe sogar versucht, die Argumente zu entfernen, die eine Ausnahme auslösen könnten. –