按周分组 EF Core 2.1

问题描述 投票:0回答:3

我需要根据报名日期每周分组吗?

c# .net entity-framework entity-framework-core
3个回答
8
投票

不太清楚您想要什么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 })

1
投票

使用 System.Globalization;

 .GroupBy( 
              g => CultureInfo.CurrentCulture.Calendar.GetWeekOfYear( g.Trsdt, 
              CalendarWeekRule.FirstDay,DayOfWeek.Monday )
           )

0
投票

这对我有用(.net 8.0):

.GroupBy(x => new
{
  WeekNumber = EF.Functions.DateDiffWeek(x.DocDate.AddDays(-x.DocDate.DayOfYear), x.DocDate) + 1, 
© www.soinside.com 2019 - 2024. All rights reserved.