Mam zapytanie:LINQ suma i zerowy
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");
}
Kiedy wydrukować aggPlays
w pętli powyżej wyjdą jako:
{21}
{}
{}
{}
Problem wydaje się, że Sum()
powraca null
jeśli nie istnieją żadne zapisy. Nie jestem pewien, jak to obejść, aby c.Plays + null
nie równa się null
, ale tylko c.Plays
.
Thanks to działa! Dlaczego jest sumą pustego zestawu zerowego w linq do sql? Suma pustego zestawu powinna wynosić 0 w prawo? –
@TomGullen * "' Sum() 'zawsze zwraca 0 dla pustej sekwencji w zwykłym LINQ, wydaje się, że jest to raczej LINQ do niedoboru SQL, a nawet wtedy powinno być możliwe tylko wtedy, gdy sumowane wartości same są zerowe (ponieważ w przeciwnym razie zwracany typ Sum byłby zwykły * "dziesiętny' *, a nie *" dziesiętny? '*)." * Z http://connect.microsoft.com/VisualStudio/feedback/details/360365/linq-sum- metoda-wartość-zwrotu – Rob
@robjb żadna z kolumn nie jest null, czy jest to błąd w linq do sql, to? –