Zasadniczo, gdy wykonuję następujące zapytanie, jeśli nie zostaną dopasowane żadne potencjalne szanse, poniższe zapytanie zgłasza wyjątek. W takim przypadku wolałbym, aby suma wyrównała 0, zamiast zgłaszania wyjątku. Czy byłoby to możliwe w samym zapytaniu - mam na myśli raczej niż zapisywanie zapytania i sprawdzanie 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);
SQLgenerowania. Amounttak naprawdę nie jest null, to naprawdę problem z tym, jak radzi sobie z zerowymi wynikami. Spójrz na udzieloną odpowiedź.
decimal, twój kod powinien użyć decimal. Zapomnij, że kiedykolwiek znał floati doublew swojej karierze programowania aż do dnia, ktoś powie Ci, aby ich użyć do celów statystycznych lub gwiazdy luminancji lub wynikach stochastycznego procesu lub ładunku elektronu! Do tego czasu robisz to źle .
WhereNie wrócinull, jeśli nie znaleźliśmy żadnych rekordów, to zwróci listę elementów zerowych. Jaki jest wyjątek?