c# - 按任意时间间隔对 DateTime 进行分组

标签 c# linq

您好,我正在尝试按 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/

相关文章:

c# - 如果 Expression 为 null 或为空而不在 IF 语句中检查 null 是否可以忽略它?

c# - 如何将使用 SqlServer 作为数据库服务器的应用程序部署到 Azure Batch

c# - 将 PENDING 锁设置为 EF core Sqlite

C# 将代码添加到 FormClosing 事件会禁用 MdiParent 上的 X

c# - .nu​​get 文件夹为什么解决方案有它?

c# - 将多个字典的值合并到一个列表中

c# - 使用 LINQ 比较 C# 中的两个列表并将缺失项添加到实体类的最简单方法

javascript - 脚本代码不在 foreach 循环内运行?

c# - 如何在不使用 Invoke 方法的情况下组合两个 lambda 表达式?

c# - ServiceStack OrmLite "Like"Linq