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

时间:2014-12-11 10:37:12

标签: c# .net entity-framework group-by

我有DateTime的表吗?列'DueOn'。我试图按此列对所有行进行分组。

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

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

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

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

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

由于

1 个答案:

答案 0 :(得分:1)

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

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变量中。