Один из подходов был бы:
1) Создать перечисление для всего месяца в году,
public enum Month
{
NotSet = 0,
January = 1,
February = 2,
March = 3,
April = 4,
May = 5,
June = 6,
July = 7,
August = 8,
September = 9,
October = 10,
November = 11,
December = 12
}
2) Создать один пользовательский метод, который может занять перечисление выше месяца для определенногогод, и он рассчитывает количество дней в данном месяце, и для каждого дня вы можете заполнить данные вашего события
public static MonthEventsResponseModel GetEventData(int year, Month month)
{
var days = DateTime.DaysInMonth(year, (int)month);
MonthEventsResponseModel model = new MonthEventsResponseModel();
model.Events = Enumerable.Range(1, days)
.Select(day => new
{
Day = day,
Event = new List<Event>() //<= Instead of new list, Fill Event data with respect to particular day from List or Database Call or API call
})
.ToDictionary(x => x.Day, y => y.Event);
return model;
}
3) Затем вызвать метод выше, как,
MonthEventsResponseModel model = GetEventData(2018, Month.December);
4) Наконец, конвертируйте вашу модель в json,
string json = JsonConvert.SerializeObject(model);
5) И модели классов,
public class Event
{
public string Title { get; set; }
public string DateTime { get; set; }
}
public class MonthEventsResponseModel
{
public Dictionary<int, List<Event>> Events { get; set; }
}