EWS按主题搜索约会
本文关键字:搜索 约会 EWS | 更新日期: 2023-09-27 18:25:19
我使用的是EWS托管API 2.0。我希望将来能够搜索一个日历来交换关于约会的主题。
注意事项是:
- 仅返回与主题="测试"匹配的未来约会
- 仅返回未来90天内的约会
我可以让CalendarView在未来90天内返回约会,但不知道如何使用SearchFilter进行筛选。为了获得最佳性能,我宁愿不返回所有约会,然后进行筛选。
我可以使用ItemView和SearchFilter按主题筛选约会。然而,这并不能过滤掉已经发生的约会。它返回与筛选器匹配的所有内容。
理想情况下,如果我可以在SearchFilter中使用CalendarView,但我收到错误"可能没有为CalendarView指定限制和排序顺序。"
FindItemsResults<Item> findResults = svc().FindItems(fId, filter, cView);
任何帮助都会很棒。。。非常感谢。
我想明白了。。。。
使用复合搜索过滤器,如
SearchFilter.SearchFilterCollection coll = new SearchFilter.SearchFilterCollection(LogicalOperator.And);
SearchFilter subjectFilter = new SearchFilter.ContainsSubstring(AppointmentSchema.Subject, "test");
SearchFilter dateFilter = new SearchFilter.IsGreaterThanOrEqualTo(AppointmentSchema.Start, DateTime.Today);
coll.Add(subjectFilter);
coll.Add(dateFilter);
FindItemsResults<Item> findResults = svc().FindItems(fId, coll, view);
注意,使用复合搜索筛选器时,如果主元素在指定的时间范围之外,则不会出现重复序列。
这是因为定期系列中的事件(和异常)不是邮箱中的实际项目,而是作为定期主控形状的附件存储在内部。ExchangeService.FindItems方法不会在每个日历项的附件表中查找事件和异常。(来源:http://msdn.microsoft.com/en-us/library/office/dn495614(v=exchg.150).aspx#bk_recuring)
因此,如果您正在处理定期事件,您(IMHO)最好使用CalendarView和CalendarFolder.FindAppointments方法,该方法对定期约会执行定期扩展。
缺点是它不支持搜索筛选器。。。所以你必须分别过滤主题。
有人有更好的解决方案吗?如有任何帮助,我们将不胜感激。谢谢