我有一个按日期时间分组的查询,我想按日期时间和时间段进行分组。(早上,晚上)
from f in _db.Visits
where f.VisitDate >= sdate && f.VisitDate <= edate
group f by new { f.VisitDate, f.Personnel }
into myGroup
where myGroup.Any()
select new
{
myGroup.Key.VisitDate,
myGroup.Key.Personnel.Name,
myGroup.Key.Personnel.Family,
VisitType = myGroup.GroupBy(f => f.VisitTypeId).Select
(m => new { Count = m.Count(), Id = m.Key, Total = m.Sum(c => c.Amount) })
}
例如,选择2015/10/10早上,2015/10/10晚上的项目
答案 0 :(得分:0)
你可以尝试:
group f by new
{
VisitDate = DbFunctions.TruncateTime(f.VisitDate),
Morning = f.VisitDate.Hour < 13,
f.PersonnelId
}
其中13是你下午早上截断的小时。
DbFunctions.TruncateTime(f.VisitDate)
返回没有时间的日期(请注意,如果EF <6.0,则必须使用EntityFunctions.TruncateTime(f.VisitDate))
,
f.VisitDate.Hour
返回日期的小时,所以
f.VisitDate.Hour < 13
早上true
,下午false