使用EF 4.1将Linq中的DateTime.Date分组为SQL

时间:2011-04-07 12:05:58

标签: c# linq entity-framework-4 group-by

我正在尝试研究如何在Linq to SQL的时间范围内将每个项目分组,但我无法使其正常工作。

   var graph = from o in DB.Context.Occurances
            where o.Occurred > fromDate && o.Occurred <= toDate
            group o by o.Occurred.Date into g
            orderby g.Key ascending 
            select new
                       {
                           Date = g.Key,
                           Occurances = g.Count()
                       };

每次我运行时都会收到错误

  

“指定的类型成员'日期'是   LINQ to Entities不支持。   只有初始化者,实体成员和   实体导航属性是   支持“。

搜索我发现这个问题Here解决了这个问题......但是当使用Entity Framework运行它时,我得到了异常

  

“SQL无法识别该功能   Server Compact。 [功能名称=   TRUNCATETIME,数据类型(如果已知)=   ]“

任何想法都将不胜感激。谢谢!

2 个答案:

答案 0 :(得分:1)

我所知道的唯一解决方案肯定是使用Year或整数算术和组手动选择MonthDayString.Concat属性的串联在那。

来源:CLR Method to Canonical Function Mapping

答案 1 :(得分:1)

使用DbFunctions.TruncateTime(o.Occurred)在LINQ to SQL中获取Date。