c# - 如何使用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 对象匹配的所有行?
我试过了 :
- 将其更改为列表,但布尔值不起作用。
- 在服务中设置一个循环,但无法使其正常运行。
- 在函数调用中设置一个循环,但也无法使其工作。
- 谷歌并在 SO 上查找其他帖子,但找不到匹配项。
解决方案
与其搜索第一个匹配项,FirstOrDefault
不如将所有有效结果放入列表 ( Where
+ ToList
) 并删除所有结果 ( RemoveRange
)
var result = _db.Schedules.Where(x => x.AppointmentDateEnd <= objDateTime).ToList();
if (result.Any())
{
_db.Schedules.RemoveRange(result);
_db.SaveChanges();
}