Ich habe LINQ Abfrage, die äußere zwei Tabellen verlassen. Ich fand, wenn ein Wert eines Feldes Null zurückgibt, dann werde ich eine Fehlermeldung erhalten:Null-Wert im Ergebnis eines linken äußeren Joins Linq verursacht Fehler
"Die Umwandlung in Werttyp 'System.Int32' ist fehlgeschlagen, weil der materialisierte Wert Null ist. Entweder der generische Parameter des Ergebnistyps oder Die Abfrage muss einen Nullwerttyp verwenden. "
kopiert ich meine Linq unter:
var SrvRef = from s in db.SrvHeads
join r in db.Referrants on s.svhReferrer equals r.refID into r_join
from r in r_join.DefaultIfEmpty()
where s.svhAccID == accId &&
s.svhHeadCnt == HeadId
select new
{
s.svhBalance,
r.refID
};
bool FBeenPaid = SrvRef.FirstOrDefault().svhBalance == 0M; //this causes error
Wie kann ich dieses Problem beheben?
Hallo, Vielen Dank für die Hilfe . Ich brauche wirklich die linke äußere Verbindung. und ich brauche das RefId und benutze es später. Ich brauche nur die erste Reihe, und eigentlich sollte es nur eine Reihe geben. Wenn ich die Maus über den SrvRef halte, habe ich die SQL-Anweisung, ich führe die SQL in der SQL-Management-Studio, es gibt ein Ergebnis mit RefId = null. so hat der sql keine probleme. Wenn ich die refId von linq entferne, gibt es auch kein Problem. Das Problem wird daher durch ein Nullwertfeld in der SELECT-Klausel verursacht. – peter
@peter: Es ist nicht 'r.refId', das ist null hier, es ist' r' - weshalb das Extrahieren von 'r.refId' fehlschlägt. Das ist, was mein Code berücksichtigt. –