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

时间:2017-09-22 14:33:20

标签: c# .net icalendar ical-dotnet

使用iCal.Net。

我想要实现的目标是缩小日历以通过互联网发送日历,因此我不必发送整个日历,这会浪费(考虑到它会变大)如果我是问一天发生了什么。

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

Calendar.GetOccurrences(IDateTime startTime, IDateTime endTime)

似乎是一个好的开始,我不知道如何获得实际的CalendarObject,也不知道它是不是很好的方法。

1 个答案:

答案 0 :(得分:2)

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

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);
}