62,068
社区成员
发帖
与我相关
我的任务
分享
DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[] { new DataColumn("KeyName", typeof(string)),
new DataColumn("KeyCode", typeof(string)),
new DataColumn("KeyValue",typeof(int)),
new DataColumn("DateTime", typeof(DateTime)) });
dt.Rows.Add(new object[] { "温度", "6.1.1.2", 120, new DateTime(2013, 1, 1, 0, 12, 5) });
dt.Rows.Add(new object[] { "温度", "6.1.1.2", 100, new DateTime(2013, 1, 1, 0, 12, 5) });
dt.Rows.Add(new object[] { "温度", "6.1.1.2", 50, new DateTime(2013, 1, 1, 5, 0, 0) });
dt.Rows.Add(new object[] { "温度", "6.1.1.2", 90, new DateTime(2013, 1, 1, 5, 0, 12) });
dt.Rows.Add(new object[] { "温度", "6.1.1.2", 80, new DateTime(2013, 1, 1, 0, 12, 5) });
var query = from t in dt.AsEnumerable()
group t by new { keyName = t.Field<string>("KeyName"), dateTime = t.Field<DateTime>("DateTime").ToString("yyyy-MM-dd HH") } into m
select new
{
KeyName = m.Key.keyName,
DateTime = m.Key.dateTime,
Count = m.Sum(n => n.Field<int>("KeyValue"))
};
var query = from t in dt.AsEnumerable()
group t by new { keyName = t.Field<string>("KeyName"), dateTime = t.Field<DateTime>("DateTime").ToString("yyyy-MM-dd HH") } into m
select new
{
KeyName = m.Key.keyName,
KeyCode= m.First().Field<string>("KeyCode"),
KeyValue= m.Sum(n => n.Field<int>("KeyValue")),
DateTime =DateTime.ParseExact(m.Key.dateTime,"yyyy-MM-dd HH",null),
};
var result=dt.Clone();
query.ToList().ForEach(q=>result.Rows.Add(q.KeyName,q.KeyCode,q.KeyValue,q.DateTime));
foreach (var v in query)
{
//这里访问v的值,并创建datarow
MessageBox.Show(v.DateTime);
}