每x周重复一次

本文关键字:一次 周重复 | 更新日期: 2023-09-27 18:27:04

我正在开发一个使用ORM(EntityFramework)的WPF应用程序。该应用程序允许用户计划某些任务。这些任务可能每x周重复一次。例如:每两周维护一次Google.com(从周一开始)。

我的存储方式如下。我有一个Task对象,它有一个名为"StartDate"的字段,这是任务首次启动的日期。我还创建了一个名为"Recur"的字段(我知道名称可能会更好)。"重复"字段包含某项任务应重复的周数。因此,在我上面的例子中,它包含数字2,因为Google.com上的维护必须每两周进行一次。

现在是我面临的情况;我希望用户能够检索特定周数内的所有任务。例如:检索2013年第42周的所有任务。如果我做了一个每周重复的任务,这意味着当我想检索第42周的所有任务时,这个任务必须出现。当我检索第44、46、48周等的所有任务时,它也必须显示出来。

我如何确定任务是否属于特定的周数并选择它?我一直在尝试以下内容:

context.Werk.Include("Debiteur").Where(o => o.Recur >= EntityFunctions.DiffDays(o.StartDate, today) / 7
                                                                && EntityFunctions.DiffDays(o.StartDate, today) / 7 % o.Recur == 0).ToList();

基本上,我试图做的是检查"重复"周数是否等于或大于开始日期和今天之间的不同日期数。我还检查了它与开始日期和今天的周数是否可以通过"重复"字段区分。

每x周重复一次

我不能给你一个具体的答案,因为你需要更多的上下文(比如有多少项,是否已经有一个类处理"Werk"(我是荷兰人;-))。收款是否已经过滤,即当前的"借方"在收款中)。但我可以为您指明正确的方向。

创建这样的工作类:

public class Werk
{
    public bool IsRecurrungThisWeek(DateTime date)
    {
        // This can be implemented by yourself
    }
    public DateTime StartsFrom { get; set; }
    public int Recur { get;  set; }
    public int Debiteur { get; set; }
}

做一个简单的地方:

IEnumerable<Werk> list = GetWerkObjects();
var aDateOfTheWeek = new DateTime();
var werkRecurringThisWeek = list.Where(w => w.IsRecurrungThisWeek(aDateOfTheWeek));