首页 > 解决方案 > 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();
    }

标签: asp.net-mvc

解决方案


这个比较好的比较运算符只是比较两个日期,<=但难题是您将日期存储为字符串,因此我们无法使用 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();

推荐阅读