ho la query:Linq somma e nulla
var qq = (from c in db.tblArcadeGames
where
c.IsDeleted == false &&
c.ParentGameID == 0 &&
c.Approved == true
let aggPlays = c.Plays + db.tblArcadeGames.Where(v => v.ParentGameID == c.ID).Sum(v => (int?)v.Plays)
orderby aggPlays descending
select new { c, aggPlays })
.Skip(Skip)
.Take(Fetch);
foreach (var g in qq)
{
HttpContext.Current.Response.Write("{" + g.aggPlays + "}\n");
}
Quando stampo fuori aggPlays
nel ciclo sopra vengono fuori come:
{21}
{}
{}
{}
Il problema sembra essere che i Sum()
rendimenti null
se nessun record esiste. Non sono sicuro di come aggirare questo in modo che c.Plays + null
non sia uguale a null
ma solo a c.Plays
.
Grazie questo funziona! Perché la somma di un insieme vuoto è null sebbene in linq a sql? Una somma di un set vuoto dovrebbe essere 0 giusto? –
@TomGullen * "' Sum() 'restituisce sempre 0 per una sequenza vuota in LINQ semplice, sembra che sia piuttosto un difetto LINQ to SQL, e anche in questo caso dovrebbe essere possibile solo se i valori che si sommano sono annullabili (perché altrimenti il tipo di ritorno di Sum sarebbe semplice * 'decimale' *, non *' decimale? '*)." * Da http://connect.microsoft.com/VisualStudio/feedback/details/360365/linq-sum- metodo-valore di ritorno – Rob
@robjb nessuna delle colonne è nullable, si tratta di un bug in linq a sql allora? –