在iEF中将日期时间转换为日期

时间:2016-01-16 11:05:34

标签: entity-framework

我有这个Linq语句在LinqPad中运行(使用Linq to SQL),但是当我使用EF 6将它带入我的C#应用​​程序时,我收到一个错误,说cd.LogTimestamp.Date(在GroupBy语句中)不受支持。我正在尝试按日期将datetime2值转换为group的日期值。

 helper.GetDbContext().SiteLog
     .Where( sl => sl.SiteId == 3 )
     .GroupBy( cd => new { cd.SiteId, cd.LogTimestamp.Date } )
     .Select( g => new DailyTraffic()
     {
         SiteId         = g.Key.SiteId,
         TrafficDate    = g.Key.Date,
         NewUsers       = g.Count( row => row.IsNewUser ),
         ReturningUsers = g.Count( row => row.IsReturningUser ),
         TotalUsers     = g.Count( row => row.IsNewUser ) + g.Count( row => row.IsReturningUser ),
         PageViews      = g.Count( row => row.IsPageView )
     } )
     .OrderBy( g => g.SiteId ).ThenBy( g => g.TrafficDate )
     .ToList();

是否有一种在EF 6中将datetime2值转换为date值的首选方法

1 个答案:

答案 0 :(得分:2)

使用此质量检查(how to use entity framework to group by date not date with time)作为指南,您将要使用EntityFunctions,以便您可以直接使用内置SQL Server功能,这当然意味着您的应用赢得了#39; t可以立即移植到其他数据库。

.GroupBy( cd => new { cd.SiteId, EntityFunctions.TruncateTime( cd.LogTimestamp ) } )