我有一张表格,其中包含有关产品质量控制的每日统计数据。我需要每周报告哪些产品通过/未通过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 ASD 1 ASD 4 FGG 1 FGG 5 HMD 1 JWC 1 JWC 3 ......等等。
我需要这样: ASD 6 FGG 6 HMD 1 JWC 4 ....
我尝试使用Select p.Product Distinct但无法弄清楚如何总结p.PCount的数量
任何帮助表示感谢。
更新
根据Ric的代码,我试图转换,以便我仍然有一个列表,我后来使用For Each产品在productsPassed并使用StringBuilder构建一个html表。
我现在的代码是
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 所以我补充说现在它抱怨它希望 INTO 。此外,我不确定项目的来源。
答案 0 :(得分:1)
试试这个(未经测试并冒险猜测你的结构):
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)
})