LINQ基于最新日期的条目总和

Jim*_*Jim 2 c# linq linq-to-sql

我有一张像这样的桌子:

Code | BuildDate  | BuildQuantity
---------------------------------
1    | 2013-04-10 | 4
1    | 2014-09-23 | 1
1    | 2014-08-20 | 2
7    | 2014-02-05 | 4
Run Code Online (Sandbox Code Playgroud)

我希望LINQ查询为每个代码选择最新构建日期,为该代码选择BuildQuantity,依此类推所有记录,并总结它.所以对于上面的数据,结果应该是1 + 4 = 5.

这就是我正在尝试的:

var built = (from tb in db.Builds
             orderby tb.BuildDate descending
             group tb by tb.Code into tbgrp
             select tbgrp.Sum(c => c.BuildQuantity)).First();
Run Code Online (Sandbox Code Playgroud)

这个查询返回7 ...我做错了什么?

Tim*_*ter 8

在你拿第一个代码之前,你总结了所有代码的BuildQuantities,而不是你想要总结第一.

int built = db.Builds
    .GroupBy(b => b.Code)
    .Sum(g => g.OrderByDescending(b => b.BuildDate).First().BuildQuantity); 
Run Code Online (Sandbox Code Playgroud)