Nicolas Lewentorp
Nicolas Lewentorp

Reputation: 119

How to delete elements from sql database based on a date using c# .net

I have this Service that works to delete one (1) row from the database (Sorry for any lingo errors.):

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;
    }

This as the calling function:

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();
        }
    }
}

But how do I change it to delete all rows that matches the passed DateTime object?

I have tried :

Upvotes: 0

Views: 203

Answers (1)

Annosz
Annosz

Reputation: 1032

Instead of searching for the first match with FirstOrDefault you should get all valid result into a List (Where + ToList) and delete all of them (RemoveRange)

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

Upvotes: 2

Related Questions