que tienen la consulta:LINQ suma y la nula
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");
}
Cuando imprimo aggPlays
en el bucle de arriba salen como:
{21}
{}
{}
{}
El problema parece ser que los Sum()
vuelve null
si no existen registros No estoy seguro de cómo evitar esto para que c.Plays + null
no sea igual a null
pero solo c.Plays
.
Gracias Esto funciona! ¿Por qué la suma de un conjunto vacío es nula en linq a sql? Una suma de un conjunto vacío debería ser 0 ¿verdad? –
@TomGullen * "' Suma() 'siempre devuelve 0 para una secuencia vacía en LINQ simple, parece que es más bien una deficiencia de LINQ a SQL, e incluso entonces solo debería ser posible si los valores que suma son nulos (porque de lo contrario, el tipo de devolución de Sum sería simple * 'decimal' *, no *' decimal? '*)." * Desde http://connect.microsoft.com/VisualStudio/feedback/details/360365/linq-sum- method-return-value – Rob
@robjb ninguna de las columnas puede contener nulos, ¿es esto un error en linq a sql? –