[C#]组由 Linq 中的时间段

发布时间: 2017/2/27 6:49:09
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我有一个查询该组的日期时间,我想要按日期时间和时间段内进行分组。(早上、 晚上)

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 晚上

解决方法 1:

您可以尝试︰

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 在下午

官方微信
官方QQ群
31647020