图 API 日历视图事件分页
Graph API Calendar view events paging
我是 Graph API 的新手,需要获取已登录用户的日历事件。我已经让这个在这个 article 之后部分工作
但我只看到 10 个事件。
//get calendar events
var startTime = DateTime.Today.ToString("s");
var endTime = DateTime.Now.AddDays(7).ToString("s");
var queryOptions = new List<Microsoft.Graph.QueryOption>()
{
new Microsoft.Graph.QueryOption("startDateTime", startTime),
new Microsoft.Graph.QueryOption("endDateTime", endTime)
};
var calendarView = await graphClient.Me.Calendar.CalendarView
.Request(queryOptions)
.GetAsync();
ViewData["Events"] = calendarView;
查看 calenderView 的属性,我可以看到有:
{[@odata.nextLink, https://graph.microsoft.com/beta/me/calendar/calendarView?startDateTime=2020-06-12T00%3a00%3a00&endDateTime=2020-06-19T12%3a49%3a37&$skip=10]}
我正在努力了解如何循环浏览页面,以便 return 我可以查看所有事件。
我的应用程序是围绕 ASP Core 3.1 C# 以及 Graph 3.7.0 和 1.20.1
构建的
非常感谢任何帮助。
10 是默认页面大小,您可以通过在 .GetAsync()
之前添加一个 .Top(N)
调用来更改它,其中 N 是最大 1000 的某个数字。不过您可能仍然需要分页,所以你应该做好应对的准备。
使用 Graph .NET SDK 有两种选择。根据您的代码,其中 calendarView
是您最初请求 10 件商品时返回的对象:
自己请求下一页
var nextPage = calendarView.NextPageRequest.GetAsync();
使用 SDK 的页面迭代器class
PageIterator
class 会为您浏览每一页,所以所有
你要做的就是给它一个回调来对每个事件做一些事情,然后调用 IterateAsync
.
var pageIterator = PageIterator<Event>.CreatePageIterator(
graphClient, calendarView,
(e) => {
// Called for each event so you can process
// Do something with the event here, add to a list,
// etc.
// Return true to keep iterating. You can
// Return false to stop the iteration before exhausting all
// pages
return true;
}
);
await pageIterator.IterateAsync();
我是 Graph API 的新手,需要获取已登录用户的日历事件。我已经让这个在这个 article 之后部分工作 但我只看到 10 个事件。
//get calendar events
var startTime = DateTime.Today.ToString("s");
var endTime = DateTime.Now.AddDays(7).ToString("s");
var queryOptions = new List<Microsoft.Graph.QueryOption>()
{
new Microsoft.Graph.QueryOption("startDateTime", startTime),
new Microsoft.Graph.QueryOption("endDateTime", endTime)
};
var calendarView = await graphClient.Me.Calendar.CalendarView
.Request(queryOptions)
.GetAsync();
ViewData["Events"] = calendarView;
查看 calenderView 的属性,我可以看到有: {[@odata.nextLink, https://graph.microsoft.com/beta/me/calendar/calendarView?startDateTime=2020-06-12T00%3a00%3a00&endDateTime=2020-06-19T12%3a49%3a37&$skip=10]}
我正在努力了解如何循环浏览页面,以便 return 我可以查看所有事件。
我的应用程序是围绕 ASP Core 3.1 C# 以及 Graph 3.7.0 和 1.20.1
构建的非常感谢任何帮助。
10 是默认页面大小,您可以通过在 .GetAsync()
之前添加一个 .Top(N)
调用来更改它,其中 N 是最大 1000 的某个数字。不过您可能仍然需要分页,所以你应该做好应对的准备。
使用 Graph .NET SDK 有两种选择。根据您的代码,其中 calendarView
是您最初请求 10 件商品时返回的对象:
自己请求下一页
var nextPage = calendarView.NextPageRequest.GetAsync();
使用 SDK 的页面迭代器class
PageIterator
class 会为您浏览每一页,所以所有
你要做的就是给它一个回调来对每个事件做一些事情,然后调用 IterateAsync
.
var pageIterator = PageIterator<Event>.CreatePageIterator(
graphClient, calendarView,
(e) => {
// Called for each event so you can process
// Do something with the event here, add to a list,
// etc.
// Return true to keep iterating. You can
// Return false to stop the iteration before exhausting all
// pages
return true;
}
);
await pageIterator.IterateAsync();