在实体框架中按日期期间名称分组

本文关键字:日期 实体 框架 | 更新日期: 2023-09-27 18:33:53

我有带有日期时间的表?列"DueOn"。我正在尝试按此列对所有行进行分组。

 var groupBy = new Expression<Func<MyEntity, DateTime?>>(t => t.DueOn);
 var groups = sequence.GroupBy(groupBy).ToList();

一切正常。但我想以以下形式分组:

昨天今天明天总有一天如果可为空

我看到的一种方法是从结果中循环浏览列表,比较 DueOn 并将项目复制到具有上述组的另一个列表。

但也许有更有效的解决方案?

谢谢

在实体框架中按日期期间名称分组

在不创建显式表达式对象的情况下,在预定的时间存储桶中对日期进行分组的一种方法是:

dates.GroupBy(da => da.HasValue
                    ? da.Value.Date > DateTime.Today.AddDays(1)
                        ? "Future"
                        : da.Value.Date > DateTime.Today
                            ? "Tomorrow" 
                            :  da.Value.Date == DateTime.Today
                                ? "Today" 
                                : da.Value.Date == DateTime.Today.AddDays(-1)
                                    ? "Yesterday"
                                    : "Overdue"
                    : "Some day")

当然,您可以将整个表达式存储在 groupBy 变量中。