更改某些数据的布尔值,其中 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();
}
我正在使用 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();
}