linq group by hour range?

时间:2012-11-09 14:58:05

标签: c# linq group-by

我按小时对数据进行分组:

group c by new { date = new DateTime(Date.Year, Date.Month, Date.Day, Date.Hour, 5, 0), name = c.Name } into g

我希望得到这样的结果:10.05 - 11.05当我调试代码时,Date会像我预期的那样返回。但数据仍然在10.00 - 11.00之间分组。

我希望我能解释一下。这样做的逻辑是什么?

感谢。

2 个答案:

答案 0 :(得分:1)

var groups = dList.GroupBy(d => (d.Ticks - 5*TimeSpan.TicksPerMinute) / TimeSpan.TicksPerHour)
                .Select(g => g.ToList())
                .ToList();

答案 1 :(得分:1)

let offSetDate = Date.AddMinutes(-5)  //shift back so that Year,Month,Day,Hour are all that matter.
let groupKey = new {
  date = new DateTime(offSetDate.Year, offSetDate.Month, offSetDate.Day, offSetDate.Hour, 5, 0),
  name = c.Name
}
group c by groupKey into g