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);
SQLest généré. Amountn'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 floatet doubledans 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 .
Wherene reviendrait pasnulls'il ne trouvait aucun enregistrement, il renverrait une liste de zéro élément. Quelle est l'exception?