Как удалить элементы из базы данных sql на основе даты, используя c#. net - PullRequest
0 голосов
/ 23 марта 2020

У меня есть эта служба, которая работает для удаления одной (1) строки из базы данных (извините за любые ошибки lin go.):

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?

Я пытался:

  • , чтобы изменить его на список, но затем bool не работает.
  • устанавливает al oop в Сервисе, но не может заставить его работать правильно.
  • устанавливает al oop в вызове функции, но может '
  • для работы в Google и поиска других сообщений на SO, но не найдено.

1 Ответ

2 голосов
/ 23 марта 2020

Вместо поиска первого совпадения с помощью FirstOrDefault вы должны получить все действительные результаты в список (Where + ToList) и удалить их все (RemoveRange)

var result = _db.Schedules.Where(x => x.AppointmentDateEnd <= objDateTime).ToList();            
if (result.Any())
{
    _db.Schedules.RemoveRange(result);
    _db.SaveChanges();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...