C# 每周分组?
林克 GetGroupingDateKey() 记录时间:2012年10月10日-09:15至10:15之间C# 每周分组?,c#,linq,group-by,C#,Linq,Group By,林克 GetGroupingDateKey() 记录时间:2012年10月10日-09:15至10:15之间 private static DateTime GetGroupingDateKey(MeterReadingsTimeIntervals DateRangeType, DateTime Date) { DateTime date = new DateTime(); switch (DateRangeType) { case MeterReadin
private static DateTime GetGroupingDateKey(MeterReadingsTimeIntervals DateRangeType, DateTime Date)
{
DateTime date = new DateTime();
switch (DateRangeType)
{
case MeterReadingsTimeIntervals.Hourly:
//For Example data is betweet 10:05 - 11:05
//DateTime offSet = Date.AddMinutes(-5);
//date = new DateTime(offSet.Year, offSet.Month, offSet.Day, offSet.Hour, 5, 0);
date = new DateTime(Date.Year, Date.Month, Date.Day, Date.Hour, 0, 0);
break;
case MeterReadingsTimeIntervals.Daily:
date = new DateTime(Date.Year, Date.Month, Date.Day, 0, 0, 0);
break;
case MeterReadingsTimeIntervals.Weekly:
date = Date.AddDays(-((7 + Date.DayOfWeek - DayOfWeek.Monday) % 7));
break;
case MeterReadingsTimeIntervals.Monthly:
date = new DateTime(Date.Year, Date.Month, 1, 0, 0, 0);
break;
case MeterReadingsTimeIntervals.Yearly:
date = new DateTime(Date.Year, 1, 1, 0, 0, 0);
break;
}
return date;
}
如何按周对记录进行分组。我的每周分组有什么问题
提前谢谢。我想你的
日期有一个时间段-你需要把它归零,例如
Hourly groupped data count : 2 (expected)
Daily groupped data count : 1 (expected)
Weekly groupped data count : 5 (group count (not expected))
Monthly groupped data count : 1 (expected)
Yearly groupped data count : 1 (expexted)
我会想象你的日期有一个时间部分-你需要把它归零,例如
Hourly groupped data count : 2 (expected)
Daily groupped data count : 1 (expected)
Weekly groupped data count : 5 (group count (not expected))
Monthly groupped data count : 1 (expected)
Yearly groupped data count : 1 (expexted)
正是我所想的。您总是使用空时间部分创建新的DateTime
值-除了这一种情况。基本上,您的原始代码正在转换,例如“星期二下午5点”、“星期五上午7点”、“星期天晚上9点”到“星期一下午5点”、“星期一上午7点”、“星期一下午9点”,因此它们仍然不同。通过使用Date.Date
而不是Date
,此代码将例如“星期二下午5点”转换为“星期二午夜”,然后将其转换为“星期一午夜”。这正是我所想的。您总是使用空时间部分创建新的DateTime
值-除了这一种情况。基本上,您的原始代码正在转换,例如“星期二下午5点”、“星期五上午7点”、“星期天晚上9点”到“星期一下午5点”、“星期一上午7点”、“星期一下午9点”,因此它们仍然不同。通过使用Date.Date
而不是Date
,此代码将例如“星期二下午5点”转换为“星期二午夜”,然后将其转换为“星期一午夜”。
date = Date.Date.AddDays(-((7 + Date.DayOfWeek - DayOfWeek.Monday) % 7));