我失蹤的功能當前的解決方法是
var firstMondayOfYear = this.GetFirstMondayOfYear(DateTime.Now.Year);
var entries =
this.entitiesService.FindForLastMonths(this.CurrentUser.Id, 6)
.GroupBy(x => ((int)(x.Date - firstMondayOfYear).TotalDays/7))
功能GetFirstMondayOfYear
:
private DateTime GetFirstMondayOfYear(int year)
{
var dt = new DateTime(year, 1, 1);
while (dt.DayOfWeek != DayOfWeek.Monday)
{
dt = dt.AddDays(1);
}
return dt;
}
這組給出了本年度前幾年的週數和負值。
稍後,您可以通過使用此getter得到一週名稱:
public string WeekName
{
get
{
var year = DateTime.Now.AddYears((int)Math.Floor(this.WeekNumber/52.0)).Year;
var weekNumber = this.WeekNumber % 52;
while (weekNumber < 0)
{
weekNumber += 52;
}
return $"{year}, W{weekNumber}";
}
}
由於目前所有的EF核心的查詢有'GroupBy'條款都是在內存中處理,你可以安全地使用'x.Date.DayOfYear/7 '或者類似的東西。 –