Linq to SQL select distinct 和 sum

Linq to SQL select distinct and sum

我有一个 table 用于保存产品 QC 的每日统计数据。我需要制作一份关于哪些产品的每周报告 passed/failed QC。

我可以使用以下方法获取数据:

Dim productsPassed = (From p In dc.tblProductStats
                      Where p.StatDate >= startDate And p.StatDate <= endDate And p.Status = "PASS"
                      Order By p.Product)

由于这是一个每日统计列表,我通过使用 p.Product 和 p.PCount 列

得到以下信息

ASD 1 自闭症 1 自闭症谱系障碍 4 FGG 1 FGG 5 头盔显示器 1 联合会 1 JWC 3 ....等

我需要这样: 自闭症 6 FGG 6 头盔显示器 1 JWC 4 ....

我试过使用 Select p.Product Distinct 但不知道如何总结 p.PCount

的计数

感谢任何帮助。

更新

根据 Ric 的代码,我尝试进行转换,以便我仍然有一个列表,稍后我使用 For Each product In productsPassed 并使用 StringBuilder 构建一个 html table。

我现在的密码是

Dim ProductsPassed = (From p In dc.tblProductStats
                              Where (Function(p) p.StatDate >= ReportStartDate AndAlso p.StatDate <= ReportEndDate AndAlso p.PStatus = "PASS")
                              Group By (Function(p) p.Product)
                              Select (Function(p) New With {.Product = p.Key,
                                                            .PCount = p.Sum(Function(item) item.PCount)}))

最初我有 GROUP 并且 VS 抱怨它期望 BY 所以我添加了它,现在它抱怨它期望一个 进入。我也不确定 item 来自哪里。

试试这个(未经测试并冒险猜测您的结构):

Dim ProductsPassed = dc.tblProductStats.   
    Where(Function(p) p.StatDate >= startDate AndAlso
                   p.StatDate <= endDate AndAlso p.Status = "PASS").
    GroupBy(Function(p) p.Product).
    Select(Function(p) New With {
        .Product = p.Key,
        .Count = p.Sum(Function(item) item.PCount)
    })

使用我编写的一些示例 类 产生以下输出