检查DB是否已经有DateTime等于表单中传递的DateTime

时间:2016-06-29 14:24:01

标签: c# asp.net-mvc linq datetime

我在ASP.NET MVC C#中创建Web Scheduler。所以,我在Controller中创建了Action ActionResult,如下所示:

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "ID,NomeResponsavelEvento,NomeEvento,DataInicioEvento,HorarioInicioEvento,DataFinalEvento,HorarioFinalEvento")] Evento evento)
{
    var teste = from x in db.Eventos where x.HorarioInicioEvento.Hour.Equals(evento.HorarioInicioEvento.Hour) select x;

    if (ModelState.IsValid)
    {
        db.Eventos.Add(evento);
        db.SaveChanges();
        return RedirectToAction("Index");
    }
    else
    {
        TempData["ErroHorarioExistente"] = "Já possui um evento no horário informado! Tente outro horário.";
        return RedirectToAction("Index");
    }

    return View(evento);
}

我想要做的是检查(使用if语句),如果在DB中已经有同一小时的事件:新创建表单事件的分钟。我在" var teste"中使用了一些断点。但它始终显示null,即使已经在DB中具有与我的表单相同的DateTime的事件。当我在这个问题中尝试做另外一个例子:How to check if a record already exists in the db using asp.Net MVC

我可以将其作为:db.Eventos.Any(ag => ag.DataInicioEvento == evento.DataInicioEvento),但此方法只检查某个日期是否相等,然后返回true,已经有一个同一天,它的工作原理。但是我需要它来工作一小时:分钟

1 个答案:

答案 0 :(得分:3)

首先,你应该在var teste = ...之后放置刹车点,因为在行执行之前,断点会停止。接下来,如果你想要相同的小时和分钟,你可以做:

var teste = db.Eventos.Where(ag => 
    ag.DataInicioEvento.Hour == evento.DataInicioEvento.Hour 
    && ag.DataInicioEvento.Minute == evento.DataInicioEvento.Minute 
)