Fondamentalement, lorsque je fais la requête suivante, si aucune piste ne correspond, la requête suivante lève une exception. Dans ce cas, je préférerais que la somme égale 0 plutôt qu'une exception levée. Serait-ce possible dans la requête elle-même - je veux dire plutôt que de stocker la requête et de vérifier 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
est généré. Amount
n'est pas réellement null
, c'est vraiment un problème concernant la façon dont il gère les résultats zéro. Jetez un œil à la réponse qui a été fournie.
decimal
, votre code doit utiliser decimal
. Oubliez que vous ayez jamais connu float
et double
dans votre carrière de programmeur jusqu'au jour où quelqu'un vous dit de les utiliser, pour des statistiques ou la luminance des étoiles ou les résultats d'un processus stochastique ou de la charge d'un électron! Jusque-là, vous le faites mal .
Where
ne reviendrait pasnull
s'il ne trouvait aucun enregistrement, il renverrait une liste de zéro élément. Quelle est l'exception?