积极答复者
我要统计员工迟到的时间和,请问我在DataTable如何加总呢?

问题
答案
-
改用遍历的方式来加总
DataTable dt = new DataTable(); dt.Columns.Add("dateTimeDemo", typeof(TimeSpan)); DataRow dr = dt.NewRow(); dr["dateTimeDemo"] = "00:00:01"; dt.Rows.Add(dr); dr = dt.NewRow(); dr["dateTimeDemo"] = "00:09:10"; dt.Rows.Add(dr); TimeSpan sum = new TimeSpan(); foreach (DataRow item in dt.Rows) { sum = sum.Add(TimeSpan.Parse(item["dateTimeDemo"].ToString())); } //show result Console.WriteLine(sum.ToString());
- The blog of typewriter職人
- Convert C# to VB.NET
- /*If my concept is wrong ,please correct me.Thanks.*/
- 已编辑 Shadow .Net 2012年5月7日 17:42
- 已标记为答案 蒙田 2012年5月8日 0:26
全部回复
-
改用遍历的方式来加总
DataTable dt = new DataTable(); dt.Columns.Add("dateTimeDemo", typeof(TimeSpan)); DataRow dr = dt.NewRow(); dr["dateTimeDemo"] = "00:00:01"; dt.Rows.Add(dr); dr = dt.NewRow(); dr["dateTimeDemo"] = "00:09:10"; dt.Rows.Add(dr); TimeSpan sum = new TimeSpan(); foreach (DataRow item in dt.Rows) { sum = sum.Add(TimeSpan.Parse(item["dateTimeDemo"].ToString())); } //show result Console.WriteLine(sum.ToString());
- The blog of typewriter職人
- Convert C# to VB.NET
- /*If my concept is wrong ,please correct me.Thanks.*/
- 已编辑 Shadow .Net 2012年5月7日 17:42
- 已标记为答案 蒙田 2012年5月8日 0:26
-
您好,
也可以透过 DataTable.RowChanged 事件 加上另一个计算栏划分的来计算哦!
private void button1_Click(object sender, EventArgs e) { DataTable dt = new DataTable(); dt.Columns.Add("dateTimeDemo", typeof(TimeSpan)); dt.Columns.Add("dateTimeDemoTotalSeconds", typeof(double)); dt.RowChanged += new DataRowChangeEventHandler(dtActividad_Changed); DataRow dr = dt.NewRow(); dr["dateTimeDemo"] = "00:00:01"; dt.Rows.Add(dr); dr = dt.NewRow(); dr["dateTimeDemo"] = "00:09:10"; dt.Rows.Add(dr); //计算总秒数 double sum = (double)dt.Compute("Sum(dateTimeDemoTotalSeconds)", ""); //把秒数转成TimeSpan TimeSpan sumTimeSpan = TimeSpan.FromSeconds(sum); } private void dtActividad_Changed(object sender, System.Data.DataRowChangeEventArgs e) { if (e.Row["dateTimeDemo"] != DBNull.Value ) if (e.Row["dateTimeDemoTotalSeconds"] == DBNull.Value) e.Row["dateTimeDemoTotalSeconds"] = ((TimeSpan)e.Row["dateTimeDemo"]).TotalSeconds; }
以上說明若有錯誤請指教,謝謝。
亂馬客blog: http://www.dotblogs.com.tw/rainmaker/