根据开始和结束日期将日历缩小为仅包含必要的日历对象的最佳方法是什么

What's the best way to shrink a calendar to only contain the necessary calendar objects depending on a start and end date

使用 iCal.Net.

我想要实现的是缩小日历以通过互联网发送,这样我就不必发送整个日历,如果我这样做会很浪费(考虑到它会变大) '被问及一天内发生了什么。

我们应该只发送给定时间段内发生的事情。

Calendar.GetOccurrences(IDateTime startTime, IDateTime endTime)

似乎是一个好的开始,我不确定当时如何获得实际的 CalendarObject,也不知道这是否是好的方法。

这是我以前没有遇到过的用例,但应该不会太难。我想我会做这样的事情:

var relevantEvents = bigCalendar.GetOccurrences(start, end)
    .Select(o => o.Source)  // The parent IRecurrable
    .Cast<Event>()          // Which is an Event/CalendarEvent
    .Distinct()
    .ToList();

var smallerCalendar = new Calendar();

// I should add an extension method to UniqueComponentList for AddRange()
foreach (var relevantEvent in relevantEvents)
{
    smallerCalendar.Events.Add(relevantEvent);
}