我的 C# 应用程序在 SharePoint 外部运行,因此我将 CSOM 与 Caml 查询一起使用。我想查找安排在一天内的所有日历事件,单次和重复。我收到了与我选择的日期重叠的所有重复日历事件,即使它们在相关日期没有任何预定事件。单个事件被正确过滤并返回。如何将重复事件过滤为仅在给定日期触发的事件?使用任务列表而不是日历列表更容易吗?
var today = DateTime.UtcNow.ToString(@"yyyy-MM-ddT12:00:00Z");
var query = new CamlQuery {
ViewXml = @"<View>
<ViewFields>
<FieldRef Name='ID' />
<FieldRef Name='Title' />
<FieldRef Name='EventDate' />
<FieldRef Name='EndDate' />
<FieldRef Name='Description' />
<FieldRef Name='Category' />
<FieldRef Name='fRecurrence' />
<FieldRef Name='RecurrenceData' />
<FieldRef Name='fAllDayEvent' />
</ViewFields>
<Query>
<Where>
<DateRangesOverlap>
<FieldRef Name='EventDate'></FieldRef>
<FieldRef Name='EndDate'></FieldRef>
<FieldRef Name='RecurrenceID'></FieldRef>
<Value Type='DateTime'><Today/></Value>
</DateRangesOverlap>
</Where>
<OrderBy><FieldRef Name='EventDate' /></OrderBy>
</Query>
<QueryOptions>
<CalendarDate>"+ today + @"</CalendarDate>
<RecurrencePatternXMLVersion>v3</RecurrencePatternXMLVersion>
<ExpandRecurrence>TRUE</ExpandRecurrence>
</QueryOptions>
</View>"
};