Bei der Ausführung der folgenden LINQ to SQL-Anweisung:Warum erhalte ich eine InvalidOperationException mit dieser Linq to Sql-Methode?
var stuff = from l in _db.SqlLinks
select new
{
Link = l,
Rating = (from v in l.SqlLinkVotes
where v.Tag == tagId
&& v.VoteDate >= since
select v.Vote).Sum(),
NumberOfVotes = (from v in l.SqlLinkVotes
where v.Tag == tagId
&& v.VoteDate >= since
select v.Vote).Count(),
NumberOfComments = (from v in l.SqlLinkVotes
where v.Tag == tagId
&& v.VoteDate >= since
&& v.Comment != ""
select v.Vote).Count()
};
ich einen System.InvalidOperationException bekommen (Null-Wert kann nicht auf Int32 zugewiesen werden).
Durch Debugging habe ich gesehen, dass dies von der Eigenschaft Rating des dynamischen Objekts stammt. Wenn es für einen bestimmten Link keine SqlLinkVotes gibt, ergibt Sum() einen Nullwert, aber Rating ist ein Int und linq to sql denkt, dass Sum() zu einem int führt, nicht zu einem nullbaren int.
Ich könnte leicht eine gespeicherte Prozedur schreiben, um dies zu umgehen, aber ich dachte, es war ein guter Weg für mich zu verstehen, linq zu SQL mehr.
Bitte helfen!
Aha! Du warst schneller als ich! Ich habe gerade das Gleiche gepostet. –
Diese Antwort funktioniert - wurde vor ein paar Wochen gebissen, fand dieses Update. –
Man das ist ein frustrierendes kleines Problem obwohl –