レポートのソースとして使用しているデータベーステーブルがあります。テーブルのレイアウトは次のようになります。表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に3つの異なる値があります。結果のテーブルには、3つの値すべての時間を合計する必要があります。
Value Description Hours
1 A 5
2 B 10
3 C 8
これで、別のストアドプロシージャを作成することで、SQLでこれを行うことができますが、既存のデータテーブルを使用し、C#関数を記述して結果を取得したいと思います。LINQを使用してこれを実現する簡単な方法はありますか?