Tôi có truy vấn:LINQ sum và null
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");
}
Khi tôi in ra aggPlays
trong vòng lặp trên họ đi ra như:
{21}
{}
{}
{}
Vấn đề có vẻ là rằng Sum()
lợi nhuận null
nếu không có hồ sơ tồn tại. Tôi không chắc chắn cách giải quyết vấn đề này để c.Plays + null
không bằng null
nhưng chỉ c.Plays
.
Nhờ công trình này! Tại sao tổng của một tập trống rỗng mặc dù trong LINQ to sql? Tổng của một tập rỗng phải là 0 phải không? –
@TomGullen * "' Sum() 'luôn luôn trả về 0 cho một chuỗi rỗng trong LINQ đồng bằng, có vẻ như nó là một thiếu LINQ to SQL, và thậm chí sau đó nó sẽ chỉ có thể nếu các giá trị bạn tổng là bản thân nullable (bởi vì nếu không thì kiểu trả về của Sum sẽ là đồng bằng * 'decimal' *, không *' decimal? '*)." * Từ http://connect.microsoft.com/VisualStudio/feedback/details/360365/linq-sum- phương thức trả về-giá trị – Rob
@robjb không có cột nào là nullable, đây có phải là lỗi trong LINQ to sql không? –