Fondamentalmente quando eseguo la seguente query, se non sono stati trovati lead corrispondenti, la query seguente genera un'eccezione. In tal caso, preferirei che la somma fosse pari a 0 anziché generare un'eccezione. Ciò sarebbe possibile nella query stessa - intendo piuttosto che archiviare la query e verificarla query.Any()
?
double earnings = db.Leads.Where(l => l.Date.Day == date.Day
&& l.Date.Month == date.Month
&& l.Date.Year == date.Year
&& l.Property.Type == ProtectedPropertyType.Password
&& l.Property.PropertyId == PropertyId).Sum(l => l.Amount);
SQL
viene generato. Amount
non è in realtà null
, è davvero un problema che circonda il modo in cui gestisce zero risultati. Dai un'occhiata alla risposta che è stata fornita.
decimal
, il tuo codice dovrebbe usare decimal
. Dimentica che hai mai conosciuto float
e double
nella tua carriera di programmatore fino al giorno in cui qualcuno ti dice di usarli, per statistiche o luminanza delle stelle o i risultati di un processo stocastico o la carica di un elettrone! Fino ad allora, stai sbagliando .
Where
non sarebbe tornatonull
se non ha trovato alcun record, sarebbe restituirà un elenco di zero elementi. Qual è l'eccezione?