Ho visto variazioni di questa domanda ovunque ma nessuna delle risposte funziona per me. La maggior parte di loro sono solo cercando di sommare una singola colonna troppo - niente di più complesso come la somma di un prodotto, come di seguito:Somma prodotto EF Linq in assenza di record
public double Total
{
get
{
return _Context.Sales.Where(t => t.Quantity > 0)
.DefaultIfEmpty()
.Sum(t => t.Quantity * t.Price);
}
}
Se non vengono restituite righe voglio tornare a zero. Tuttavia, se non viene restituita alcuna riga, il file .Sum() ha esito negativo. Esistono varie opzioni per tentare di inserire Convert.ToDouble e l'utilizzo di operatori di coalesce null, ma tutti mi hanno ancora dato errori.
Sono sicuro che mi manca un modo semplice per farlo - qualsiasi aiuto molto apprezzato dopo la battuta di testa troppo lunga contro google brick wall!
Grazie @lazyberezovsky. Ho provato che - ricevi un errore del compilatore: Operatore '??' non può essere applicato agli operandi di tipo "double" e "int". Ma questo è esattamente quello che sto cercando di ottenere ... – user1622713
@ user1622713 Penso che il casting in tipo nullable ti aiuterà –
@lazyberezovsky non 'Sum' return zero not' null' se la sequenza è vuota? –