在客户端库中,您可以对日历事件请求应用LINQ过滤:
var events = await (from i in Client.Me.Events where i.Subject == "Desired Event Name" select i)
.Take(50)
.ExecuteAsync();
或者可以使用 Where 方法,但是对于开始和结束字段,我们希望来自特定时间段的事件过滤不能用作 DateTime 存储为字符串。调用 DateTime.Parse 方法会导致异常。 这绝对应该是可以实现的,我甚至认为它有可能在某些时候可以用REST完成。开始/结束属性根据文档编制索引。当然,结果可以在收到后进行过滤,但在这种情况下,我开始接受四年前的活动。在这种方法中,通过 IPagedCollection 中的所有页面确实需要花费大量时间。幸运的是,事件似乎是按日期排序的,因此您可以在一段时间后开始事件后停止获取新页面。
答案 0 :(得分:0)
我。我仍然没有找到使用LINQ查询事件的解决方案。要查看指定的间隔,可以使用
GameObject
或Client.Me.CalendarView(from as DateTimeOffset, to as DateTimeOffset)
。按功能过滤可能是客户端代码所独有的。
答案 1 :(得分:0)
您正在初始化OutLookServicesClient的Office 365 REST API版本是什么?我可以使用v1.0 API过滤事件。您可以参考下面的代码使用LINQ来过滤带有开始和结束属性:
OutlookServicesClient client = new OutlookServicesClient(new Uri("https://outlook.office.com/api/v1.0/"), () =>
{
return Task.Delay(10).ContinueWith(t => accessToken);
});
var events = await (from i in client.Me.Events where (i.Start > DateTimeOffset.Parse("2016-07-18") && i.End< DateTimeOffset.Parse("2016-07-25")) select i)
.Take(50)
.ExecuteAsync();
foreach (var appointment in events.CurrentPage)
{
Console.WriteLine($"{appointment.Subject}:\t{appointment.Start}~{appointment.End}");
}
安装V2.0管理程序集Install-Package Microsoft.Office365.OutlookServices-V2.0
代码:
OutlookServicesClient client = new OutlookServicesClient(new Uri("https://outlook.office.com/api/v2.0/"), () =>
{
return Task.Delay(10).ContinueWith(t => accessToken);
});
var events = await (from i in client.Me.Events where (i.Start.DateTime.CompareTo("2016-07-18")>0 && i.End.DateTime.CompareTo("2016-07-25")<0) select i)
.Take(50)
.ExecuteAsync();
foreach (var appointment in events.CurrentPage)
{
Console.WriteLine($"{appointment.Subject}:\t{appointment.Start}~{appointment.End}");
}