Gra*_*avy 5 c# linq linq-to-entities
我尝试了以下(显然没有//),但我无法工作,有人可以帮忙吗?
public void CleanBasket()
{
//double validHours = 3;
// var expired = (from a in db.Baskets where (DateTime.Now - a.DateCreated).TotalHours > validHours select a);
//var expired = (from a in db.Baskets where (DateTime.Now.Subtract(a.DateCreated).Hours > 3) select a);
//var expired = (from a in db.Baskets where(a => a.DateCreated > DateTime.Now.AddHours(-1));
//foreach (Basket basket in expired) db.DeleteObject(expired);
db.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)
Ian*_*cer 15
在这种情况下,您可以在调用LINQ之前简单地进行日期时间计算:
double validHours = 3;
var latest = DateTime.UtcNow.AddHours(-validHours);
var expired = (from a in db.Baskets where a.DateCreated < latest select a);
Run Code Online (Sandbox Code Playgroud)
对于您需要在数据库中执行的任何更复杂的DateTime操作,并且不能以这种方式执行,您可以使用SqlFunctions.
顺便说一下,你应该把你的时间存储在Utc而不是当地时间.DateTime.Now在夏令时变化期间使用的计算将是错误的.
| 归档时间: |
|
| 查看次数: |
8802 次 |
| 最近记录: |