C# 更改某些数据的布尔值,其中date==DateTime.Today
我正在使用mvc5开发一个应用程序,希望当我加载一个页面时,它会检查数据的datetime是否等于表中的C# 更改某些数据的布尔值,其中date==DateTime.Today,c#,asp.net-mvc,linq,entity-framework-4,C#,Asp.net Mvc,Linq,Entity Framework 4,我正在使用mvc5开发一个应用程序,希望当我加载一个页面时,它会检查数据的datetime是否等于表中的datetime.Today,如果是,它会将布尔值设置为true public ActionResult Index() { Detail v = db.Details.Single(emp => emp.DateExpired.Value.Equals( DateTime.Today)); v.Expire = true; db.SaveChanges();
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();
}
它给了我这个错误
因为此日期等于日期时间的日期不止一个。今天
如何将这种可能性考虑在内?Single()
在只希望返回一个结果的情况下工作,并在找到匹配项时抛出错误。发件人:
返回序列中唯一的元素,如果序列中没有一个元素,则引发异常
对于您的情况,您应该使用First()
或FirstOrDefault()
当未找到匹配项时,
FirstOrDefault
将返回null
编辑:
如果要在所有匹配项上应用逻辑,应使用Where()使用Where子句,而不是单个。然后对返回的细节对象的可枚举项使用foreach。然后save.OP询问如何将此应用于更多的数据,而这些数据的日期等于DateTime.Today,因此a
.Where()
required@StephenMuecke谢谢,我想这部分已经被掩盖了
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();
}