Linq to Entities group按周编号

Gor*_*ake 6 c# linq asp.net linq-to-entities entity-framework

我正在使用ASP.NET v4.5和linq实体我试图按周使用以下代码对数据进行分组

var groupedByWeek = salesOrdersList
    .GroupBy(i => i.DueDate.AddDays(-(int)i.DueDate.DayOfWeek));
Run Code Online (Sandbox Code Playgroud)

但是我得到一个"黄色死亡屏幕",错误:

LINQ to Entities无法识别方法'System.DateTime AddDays(Double)'方法,并且此方法无法转换为商店表达式.

理想情况下我想说

var groupedByWeek = salesOrdersList.GroupBy(i => i.DueDate.WeekNumber);
Run Code Online (Sandbox Code Playgroud)

但生活并不那么容易!

有没有人知道使用Linq to Entities的周数的方法?

Mar*_*zek 16

使用SqlFunctions.DatePart()方法:

var groupedByWeek = salesOrdersList.GroupBy(i => SqlFunctions.DatePart("week", i.DueDate));
Run Code Online (Sandbox Code Playgroud)

它会将DATEPARTsql函数调用添加到生成的SQL查询中.