有一个带有时间表(星期几+哪里)的盘子,它基于enum DayOfWeek:
public class Schedule
{
public int Id { get; set; }
public DayOfWeek DayOfWeek { get; set; }
public int? PlaceId { get; set; }
public Place Place { get; set; }
[Required]
[MaxLength(50)]
public string Notes { get; set; }
}
对于人们,我必须按星期几的升序排序,例如:
return await this.ApplicationDbContext.Schedule
.Where(x => x.PlaceId != null)
.OrderBy(x => x.DayOfWeek)
.AsNoTracking()
.ToListAsync();
一切都会好起来的,但该网站是为那些每周从星期一(俄罗斯)开始的国家制作的,而不是在星期天。
DayOfWeek它从周日开始:
public enum DayOfWeek
{
Sunday,
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday,
}
有没有一些简单的方法来指定“一周的第一天是星期一”的排序?
试试“魔法”(实际上这只是一周内几天的循环移位):
在表达式树中,这个 lambda 被正常分解,我认为 EF 可以将这棵树翻译成 SQL 查询(我自己没有检查)。
该方法很好,因为只需更改常量
6,您还可以更改所需的一周开始时间。如何隐藏公式并使查询更具可读性可以在此主题中找到:如何为 lambda 制作表达式树?
添加。事实上,这样的请求是很正常地广播的。
最初的要求是:
随着星期几的变化,结果是这样的:
为什么不创建自己的枚举并使用它呢?例如,