更改某些数据的布尔值,其中 date == DateTime.Today

Change boolean value of some data where date == DateTime.Today

我正在使用 mvc5 开发一个应用程序,并希望当我加载页面时,它会检查数据的日期时间是否等于 table 中的 DateTime.Today,如果是,它将然后将布尔值设置为 true。

public ActionResult Index()
{
    Detail v = db.Details.Single(emp => emp.DateExpired.Value.Equals( DateTime.Today));
    v.Expire = true;
    db.SaveChanges();
    return View();
}

它给我这个错误

因为有不止一个日期等于 DateTime.Today,

如何考虑这种可能性?

Single() 在预期只有一个结果被 returned 的情况下工作,并在找到匹配项时抛出错误。来自 msdn :

Returns the only element of a sequence, and throws an exception if there is not exactly one element in the sequence.

对于您的情况,您应该使用 First()FirstOrDefault()
FirstOrDefault 将 return 找不到匹配项时为 null。

编辑: 如果你想在所有匹配上应用逻辑,你应该使用 Where()

  public ActionResult Index()
  {
    foreach (var r in db.Details.Where(emp => emp.DateExpired.HasValue && emp.DateExpired.Value == DateTime.Today))
    {
        r.Expire = true;
    }
    db.SaveChanges();
    return View();
  }