首页 > 解决方案 > 如何使用c#.net根据日期从sql数据库中删除元素

问题描述

我有这项服务可以从数据库中删除一 (1) 行(抱歉有任何术语错误。):

public bool DeleteSchedulesFromDate(DateTime objDateTime)
    {
        var result = _db.Schedules.FirstOrDefault(x => x.AppointmentDateEnd <= objDateTime);            
        if (result != null)
        {
            _db.Schedules.Remove(result);
            _db.SaveChanges();
        }
        else
        {
            return false;
        }
        return true;
    }

这作为调用函数:

private void DeleteSchedules(string dtEnd)
{
    deleteScheduleDate = dtEnd;

    DateTime _dtEnd;
    if (DateTime.TryParse(dtEnd, out _dtEnd))
    {
        var result = @Service.DeleteSchedulesFromDate(_dtEnd);

        schedules.Clear();
        schedules = Service.GetSchedules();

        if (result)
        {
            this.ShouldRender();
        }
    }
}

但是如何更改它以删除与传递的 DateTime 对象匹配的所有行?

我试过了 :

标签: c#.netsql-server

解决方案


与其搜索第一个匹配项,FirstOrDefault不如将所有有效结果放入列表 ( Where+ ToList) 并删除所有结果 ( RemoveRange)

var result = _db.Schedules.Where(x => x.AppointmentDateEnd <= objDateTime).ToList();            
if (result.Any())
{
    _db.Schedules.RemoveRange(result);
    _db.SaveChanges();
}

推荐阅读