我有一个数据库表,我将其用作报告的来源。表格布局看起来像。表 1 是一个更大的数据库表的子集。但是对于报告我只需要某些列所以我正在使用下面给出的函数创建一个新的数据表
Value Description Hours
1 A 2
2 B 3
3 C 5
1 A 3
2 B 4
2 B 3
3 C 3
private DataTable CreateFocusOfEffortData()
{
var dtChartData = new DataTable();
dtChartData.Columns.Add("Description", typeof(string));
dtChartData.Columns.Add("Hours", typeof(Double));
var myDataView = ReportData.DefaultView;
myDataView.RowFilter = "ActivityUnitID = " + _ActivityUnitID;
for (var i = 0; i < myDataView.ToTable().Rows.Count; i++)
{
var dataRow = new Object[dtChartData.Columns.Count];
dataRow[0] = ReportData.Rows[i]["Description"];
dataRow[1] = csaConvert.ToDouble(ReportData.Rows[i]["Hours"]);
dataRow[2] = ReportData.Rows[i]["Value"];
dtChartData.Rows.Add(dataRow);
}
return dtChartData;
}
现在我需要用上表中的汇总数据设计另一个报告。此表应基于 Column["Value] 组合所有列的数据。例如,在我的情况下,我们在 Value 列 1、2、3 中有三个不同的值。结果表应该对所有三个值进行小时总和。
Value Description Hours
1 A 5
2 B 10
3 C 8
现在我可以通过创建另一个存储过程在 sql 中执行此操作,但我宁愿使用我现有的数据表并编写一个 C# 函数来获取结果。有没有更简单的方法可以使用 LINQ 实现这一目标?