我正尝试使用Microsoft-Graph从Outlook / Office365日历中获取一些事件。从结果中我注意到,检索到的事件数为200,但是日历中的事件数却更多。因此,根据来自https://docs.microsoft.com/en-us/graph/delta-query-events?tabs=csharp的信息,我尝试分批提取事件,直到收到@ odata.deltaLink标记为止,并告诉我停止,因为没有其他事件。这里的问题是我不能使用SkipToken(...)方法来知道应该从哪一点接收其余事件。
我已经安装了1.17.0微软图形版本(发布数据:2019年8月16日,星期五(8/16/2019))。
我使用以下代码检索了第一批事件:
var events = await graphClient.Me.CalendarView.Delta()
.Request(calendarInterval)
.Header("Prefer", "odata.track-changes")
.GetAsync();
从“事件”中获得了events.AdditionalData [“ @ odata.nextLink”],以便将其用于新呼叫。
从events.AdditionalData [“ @ odata.nextLink”]中获取了skiptoken代码,以便将其用于以下调用:
var delta = await graphClient.Me.CalendarView
.Delta()
.Request()
.Header("Prefer","odata.track-changes")
.SkipToken("R0usmci39OQxqJrxK4")
.GetAsync();
R0usmci39OQxqJrxK4->是从events.AdditionalData [“ @ odata.nextLink”]
中提取的代码。这里最大的问题是我不能使用SkipToken()方法。 我有以下错误,但我不知道为什么,因为它使用了Microsoft-graph的最新版本。
错误:错误CS1061'IEventDeltaRequest'不包含'SkipToken'的定义,并且找不到可以接受的扩展方法'SkipToken'接受类型为'IEventDeltaRequest'的第一个参数(您是否缺少using指令或程序集引用?)
答案 0 :(得分:0)
您可以通过传递如下的requestOption来获得相同的结果
var queryOptions = new List<QueryOption>()
{
new QueryOption("$skiptoken", "R0usmci39OQxqJrxK4")
};
var delta = await graphClient.Me.CalendarView
.Delta()
.Request(queryOptions)
.Header("Prefer","odata.track-changes")
.GetAsync();