可以使用LINQ to DataSet来查询计算,以下是详细介绍
http://msdn.microsoft.com/zh-cn/library/bb386977(v=vs.90).aspx
示例代码如下:
DataTable dt = new DataTable();
dt.Columns.Add("pointcode").DataType = typeof(string);
dt.Columns.Add("db").DataType = typeof(double);
dt.Columns.Add("datetime").DataType = typeof(DateTime);
dt.Rows.Add("LY07", 1.4603, new DateTime(2014, 4, 4, 18, 22, 04));
dt.Rows.Add("LY08", 0.9328, new DateTime(2014, 4, 4, 18, 22, 04));
dt.Rows.Add("LY11", 16.56, new DateTime(2014, 4, 4, 18, 22, 04));
var result =
from r in dt.AsEnumerable()
group r by r.Field<DateTime>("datetime").ToString("yyyy-MM-dd") into g //按日期分组,如果要按小时分组,改成"yyyy-MM-dd HH"即可
select new
{
g.Key,
Average = g.Average(r => r.Field<double>("db"))
};
foreach (var item in result)
{
Console.WriteLine("group: " + item.Key + ", avg: " + item.Average);
}