我有DateTime的表吗?列'DueOn'。我试图按此列对所有行进行分组。
var groupBy = new Expression<Func<MyEntity, DateTime?>>(t => t.DueOn);
var groups = sequence.GroupBy(groupBy).ToList();
一切正常。但我想以以下形式分组:
昨天 今天 明天 有一天如果可以为空
我看到的一种方法是从结果中循环遍历列表,比较DueOn并将项目复制到上述组中的另一个列表。
但也许有更有效的解决方案呢?
由于
答案 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
变量中。