我有一个数据表,其列为name
,code
,dateAndTime
。现在,我想使用LINQ来获取一天中每小时的所有记录数。
DateTime列包含的数据为
2018-08-01 07:00:06.163
2018-08-01 07:50:11.873
2018-08-01 08:00:42.623
2018-08-01 07:20:48.363
2018-08-01 09:01:15.243
2018-08-01 06:01:16.507
现在我想获取从一天开始到现在(可能是1年或6个月)的所有记录的计数。
示例为: 如果第一笔记录是在2018-08-01上午5点左右,那么它以2018-08-01作为第一行开始
2018-08-01 7 - 36 count
2018-08-04 9 - 12 count
2018-08-07 11 - 12 count
2018-08-10 13 - 0 count
2018-08-13 15 - 36 count
我只希望12行,所以时间间隔被划分为12个相等的部分,可能是某天或某月。
答案 0 :(得分:0)
如果我了解您要按小时对记录进行分组。您可以在此处按小时分组。假设您有一个员工类别声明为:
static List<Employee> employees = new List<Employee>
{
new Employee {FirstName = "Marc",date = DateTime.Now.AddHours(1) },
new Employee {FirstName = "John", date = DateTime.Now.AddHours(1) },
new Employee {FirstName = "Robin",date = DateTime.Now.AddHours(2) },
new Employee {FirstName = "Mike", date = DateTime.Now.AddDays(2) }
};
然后您可以通过按小时分组来每小时对记录进行分组。以下代码可能会帮助您:
var emps = from employee in employees
group employee by employee.date.Hour into empGroup
select new
{
key = empGroup.Key,
items = empGroup
};
foreach(var item in emps)
{
foreach(var groupItems in item.items)
{
Console.WriteLine("group ");
Console.WriteLine("item={0} value={1} count={2}", item.key, groupItems.FirstName,item.items.Count());
}
}