using System.Collections.Generic;
public static void Main()
var a = Convert.ToDateTime("1-MAR-2023");
var b= Convert.ToDateTime("15-APR-2023");
var cnt = Math.Truncate(c/30) + (c%30 > 0 ? 1 : 0);
var dates = new List<Range>();
for(var i = 0; i < cnt; i++){
DateTime? lastEndDate = dates.OrderByDescending(x => x.EndDate).Select(x => x.EndDate)?.FirstOrDefault();
StartDate = lastEndDate == null ? a : Convert.ToDateTime(lastEndDate),
EndDate = Convert.ToDateTime(lastEndDate).AddDays(30)
Console.WriteLine(Convert.ToDateTime(lastEndDate).ToShortDateString());
public DateTime StartDate{get;set;}
public DateTime EndDate{get;set;}