您好,我正在尝试按 DateTime 属性对对象集合进行分组,但我遇到了一个奇怪的问题。目前我有以下内容:
TimeSpan interval = TimeSpan.FromMinutes(45);
var selected = from date in item.Dates
group date by (date.Ticks / interval.Ticks) into g
select g;
这基本可行,但如果第一个项目的时间是 11:45,那么第一组只有 15 分钟长。接下来是从 12:00 开始的下一组,并从那里正确分组。我是否遗漏了一些非常简单的东西,或者我是否需要改变尝试分组的方式?我真正想做的是将我所有的对象分成 45 分钟的 block 。
最佳答案
您只需要在分组前偏移所有日期。
TimeSpan offset = startTime.TimeOfDay;
TimeSpan interval = TimeSpan.FromMinutes(45);
var selected = from date in item.Dates
group date by ((date.Ticks - offset.Ticks) / interval.Ticks) into g
select g;
关于c# - 按任意时间间隔对 DateTime 进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18081090/