不太清楚您想要什么CalendarWeekRule,所以假设您想要最简单的(
FirstDay
),即像这样的公式
周 = 1 + (DateTime.DayOfYear - 1) / 7
EF Core 支持将
DayOfWeek
转换为 SQL,因此您可以使用类似的内容(不确定是否需要 Year
):
.GroupBy(g => new { g.Trsdt.Year, Week = 1 + (g.Trsdt.DayOfYear - 1) / 7 })
使用 System.Globalization;
.GroupBy(
g => CultureInfo.CurrentCulture.Calendar.GetWeekOfYear( g.Trsdt,
CalendarWeekRule.FirstDay,DayOfWeek.Monday )
)
这对我有用(.net 8.0):
.GroupBy(x => new
{
WeekNumber = EF.Functions.DateDiffWeek(x.DocDate.AddDays(-x.DocDate.DayOfYear), x.DocDate) + 1,