【发布时间】:2016-08-31 21:00:52
【问题描述】:
我有一个包含 3 个定义类型的列和一个包含数字的列的数据库。 这些类型可以在数据库中多次出现。 我想创建一个 DataTable,它只显示每种类型一次并汇总与该类型相关的数字。
List<String> types = typesInTable(table);
DataTable t = new DataTable();
t.Clear();
t.Columns.Add("Type");
t.Columns.Add("Total Expenses");
foreach (String type in types)
{
DataRow tmp = t.NewRow();
tmp["Type"] = type;
int total = 0;
myConnection.Open();
OleDbDataReader reader = null;
OleDbCommand cmd = new OleDbCommand("SELECT [Type] , [Expense] FROM [" + table+"]", myConnection);
reader = cmd.ExecuteReader();
while (reader.Read())
{
if(reader["Type"].ToString().Equals(type))
{
total += Convert.ToInt32(reader["Expense"].ToString());
}
}
tmp["Total Expenses"] = total;
if (!t.Rows.Contains(tmp))
{
t.Rows.Add(tmp);
}
myConnection.Close();
}
此代码使类型出现多次。
【问题讨论】:
-
为什么不用SUM函数?
-
"SELECT sum([Expense]) FROM [" + table+"] where [Type]="+type
标签: c# winforms ms-access datatable