【发布时间】:2012-11-09 13:23:00
【问题描述】:
我有以下行来分组我的收藏:
group c by new { date = GetGroupingDateKey(DateRangeType, c.ReadDate), name = c.Name } into g
我使用以下函数来获取分组日期键:
private static DateTime GetGroupingDateKey(MeterReadingsTimeIntervals DateRangeType, DateTime Date)
{
DateTime date = new DateTime();
switch (DateRangeType)
{
case MeterReadingsTimeIntervals.Hourly:
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:
// ???
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;
}
但我不知道每周分组(可能是特定的天间隔、10 天、15 天等)。如何每周分组?我应该使用其他方式对数据进行分组吗?
感谢您的建议。
【问题讨论】:
-
你如何定义“周”? 2012 年 12 月 31 日星期一与 2013 年 1 月 1 日星期二在同一周吗?周日是否与紧随其后的周一在同一周?
-
旁注:我建议遵循 .net 命名约定,其中参数以小写字母 (camelCase) 开头。
-
@MarkByersweek,星期并不重要。它可能是一个特定的天间隔。(考试:10天,15天)
-
如果您只想分组为任意大小的天间隔,可以使用 DayOfYear 属性。
-
@JamesGaunt,有代码示例吗?