public DateTime?FindEndOfExclusion(DateTime pointInExcludeRange) { var inExclude = ExcludedRanges.Where(r => r.Begin <= pointInExcludeRange && r.End >= pointInExcludeRange).OrderBy(r => r.End).LastOrDefault(); if (inExclude != null) { return(FindExcludeEnd(inExclude)); } else { return(null); } }
private DateTime FindExcludeEnd(DateRange range) { //К концу дипазона добавлен день, для того чтобы склеивать случаи когда 5 числа заканчивается предыдущий, а 6-го начинается следующий. var next = ExcludedRanges.Where(r => r.Begin <= range.End.AddDays(1) && r.End > range.End).OrderBy(r => r.End).LastOrDefault(); if (next == null) { return(range.End); } else { return(FindExcludeEnd(next)); } }