我有一个数据表,其中包含如下数据:
name Code dateAndTime
ab01 3hdfj3 2012-06-24 14:17:32.833
ab02 57dfdf 2012-07-12 14:08:28.210
ab02 57dfdf 2012-07-12 14:08:28.210
ab02 57dfdf 2012-07-12 15:08:28.210
ab03 57dfdf 2012-07-12 14:08:28.210
ab03 9jdhfj 2012-07-12 15:15:12.007
etc....
现在我想通过LINQ过滤数据表中的数据。我希望按小时计算记录数。我的一天从7点钟开始,到第二天的7点钟结束。所以,我想逐小时获得24小时的数据。这是第一个条件。
第二个条件是,我希望数据也按代码分组。所以情况就是这样:
表:
Name 7 OClock 8 O Clock 9 O Clock etc.....
ab01 56 75 88
ab02 45 45 77
ab03 57 66 67
etc...
在上面生成的表格中,列应按小时和小时递增。行应按名称递增组。我得到了当前代码以按小时计算列数。这里是DataTable的“dt”
var query = dt.AsEnumerable()
.GroupBy(row => row.Field<DateTime>("dateAndTime").Hour)
.Select(grp => new
{
Hour = grp.Key,
Count = grp.Count()
});
foreach (var x in query)
{
}
}
我如何达到上述条件?
答案 0 :(得分:2)
您可以按以下两个条件进行分组:
var query = dt.AsEnumerable()
.GroupBy(row => new
{
Hour = row.Field<DateTime>("dateAndTime").Hour,
Code = row.Field<returnTypeOFCodeColumn>("Code")
})
.Select(g => new
{
Hour = g.Key.Hour,
Code = g.Key.Code,
Count = g.Count()
}
);
foreach (var item in query)
{
//access properties here
//item.Hour, item.Code, item.Count
}