'C# How can I check overlapping ranges?

I have the following ranges in database. I am trying to check if there is an overlapping range on editing existing records.

Range looks like as follows

enter image description here

I used the following code to check overlapping ranges.

var allRanges = await _dlRangesService.GetAllRanges();
var isOverlapping = allRanges.Any(r => r.RangeStart <= rangeToUpdate.RangeStart && rangeToUpdate.RangeStart <= r.RangeEnd && rangeToUpdate.ID != r.ID) ||
                    allRanges.Any(r => r.RangeStart <= rangeToUpdate.RangeEnd && rangeToUpdate.RangeEnd <= r.RangeEnd && rangeToUpdate.ID != r.ID);
 

and I added the following condition to through validation on save

if (isOverlapping)
    ModelState.AddModelError("Range", "Range overlaps with existing Range.");

but when I edit the first range in pic above 10000 - 10000 to 10000 - 22000 it allows me to save.

I also tried the following, in this case it won't let me save changes even if there is no overlapping range in the database. but it works on creating a new record.

 var allRanges = await _dlRangesService.GetAllRanges();
 var isOverlapping = allRanges.Any(r => r.RangeStart <= rangeToUpdate.RangeStart && rangeToUpdate.RangeStart <= r.RangeEnd) ||
                     allRanges.Any(r => r.RangeStart <= rangeToUpdate.RangeEnd && rangeToUpdate.RangeEnd <= r.RangeEnd);

Any help?



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source