asp.net-mvc - RemoveRange 不删除所有记录
问题描述
以下方法应该删除所有旧数据但是,当我进行调查时,我发现即使发布日期在该范围内,数据库中的某些数据也没有被删除。有人可以解释为什么吗?
未删除的数据:
19/02/2020 01/04/2020
24/03/2020
public ActionResult DeleteOldData()
{
for(int i = 8; i < 900; i++)
{
DateTime now = DateTime.Now;
var time = now.AddDays(-i).ToString("dd/MM/yyyy").ToString();
db.Data.RemoveRange(db.Data.Where(a => a.PostedDate == time).ToList());
db.SaveChanges();
}
return View();
}
解决方案
这个比较好的比较运算符只是比较两个日期,<=
但难题是您将日期存储为字符串,因此我们无法使用 LINQ 直接比较它,需要执行如下解决方法;
试试下面的代码,也试试不带循环;
DateTime now = DateTime.Now;
var time = now.AddDays(-i).ToString("dd/MM/yyyy").ToString();
var dateList = db.Data.ToList();
List<Data> toDelete = new List<Data>();
foreach(var item in dateList){
if(Convert.ToDateTime(a.PostedDate) <= Convert.ToDateTime(time)){
toDelete.Add(item);
}
}
db.Data.RemoveRange(toDelete);
db.SaveChanges();
推荐阅读
- bootstrap-4 - 如何使导航栏品牌形象具有响应性并适合导航栏
- vim - 在 UltiSnips 片段中使用空格
- web-scraping - 使用 javascript 分页抓取
- sql - GBQ SQL:对于A列中的每个唯一值,如果值'X'出现在B列中......然后创建新的列C,值为'Y',否则为'N'
- java - 获取两个字符之间的字符串(两个引号)
- unity3d - 我现在在 Unity 2017 LTS 上。要升级,我应该直接升级到 2019 LTS 还是应该先升级到 2018 LTS?
- javascript - Discord 机器人类型错误。无法连接到我的服务器
- sql - 是否可以生成 2 个 SQL 快照之间更改的脚本?
- powerbi - 从 MS 团队中提取活动报告以显示用户何时登录和注销
- reactjs - 向组件发送数据