0

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

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

现在是我面临的情况;我希望用户能够在某个周数中检索所有任务。例如:检索 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();

基本上我试图做的是检查“重复”周的数量是否等于或大于它在开始日期和今天之间不同的日期数量。我还检查了它与 startdate 和今天的周数是否可以被“recur”字段整除。

4

1 回答 1

0

我不能给你一个具体的答案,因为 woukd 需要更多的上下文(比如有多少项目,是否已经有一个处理“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));
于 2013-08-10T19:25:41.170 回答