1

给定以下数据库结构并使用 EntityFramework。

在此处输入图像描述

每五分钟,“phasecount”表获取“Phase”中每条记录的记录。

using (Entities db = new Entities())
{
    db.ContextOptions.LazyLoadingEnabled = false;

    int numberofcontrollers = (from a in db.Junctions select a).Count();
    List<int> controllerids = (from b in db.Junctions select b.Id).ToList();

    var configuration = (from c in db.Configurations select c).First();

    DateTime laststamp = (from s in db.Stamps select s.Time).Max();
    DateTime firststamp = laststamp.AddMinutes(-1 * (CountIntervalsBefore - 1) * TimeSliceLength);

    var stamps = from s in db.Stamps.Include("PhaseCounts.Phase") where s.Time >= firststamp && s.Time <= laststamp orderby s.Id select s;
    // check consistency; number of stamps should equal timeslices*controllers

    if (stamps.Count() != CountIntervalsBefore * numberofcontrollers)
    {
         //counts are not available for all timeslices and controllers
         //do extended consistency check (and use dummy data?)
    }
}

我想为所有阶段选择每个阶段的一小时。

邮票通常等于 72,即 12 个 5 分钟切片 * 6 个路口。

如果不等于 72,如何确定哪些阶段和哪些时间戳有缺失数据?

4

1 回答 1

0

我对解决方案的第一个想法;这可能不是最佳搜索方法,但应该可以。

取组中最早的时间戳,并检查您是否确实具有具有该时间戳的正确数量的记录(根据您所说,我相信这是 6)。从中您可以判断此集合中是否缺少任何内容。然后寻找最接近当前时间戳的时间戳。如果它明显超过大约五分钟,则您缺少一整套。如果大约是五分钟,请检查您是否拥有正确数量的带有该时间戳的记录,就像第一组一样。重复直到(丢失的记录总数 + 找到的记录总数 = 72)或记录用完。如果你到了记录的末尾,仍然有一些缺失,那么最早的时间戳不是第一个,而且你也有一个完整的集合缺失。在此刻,

于 2013-02-19T09:10:54.250 回答