EWS按主题搜索约会

本文关键字:搜索 约会 EWS | 更新日期: 2023-09-27 18:25:19

我使用的是EWS托管API 2.0。我希望将来能够搜索一个日历来交换关于约会的主题。

注意事项是:

  1. 仅返回与主题="测试"匹配的未来约会
  2. 仅返回未来90天内的约会

我可以让CalendarView在未来90天内返回约会,但不知道如何使用SearchFilter进行筛选。为了获得最佳性能,我宁愿不返回所有约会,然后进行筛选。

我可以使用ItemView和SearchFilter按主题筛选约会。然而,这并不能过滤掉已经发生的约会。它返回与筛选器匹配的所有内容。

理想情况下,如果我可以在SearchFilter中使用CalendarView,但我收到错误"可能没有为CalendarView指定限制和排序顺序。"

FindItemsResults<Item> findResults = svc().FindItems(fId, filter, cView);

任何帮助都会很棒。。。非常感谢。

EWS按主题搜索约会

我想明白了。。。。

使用复合搜索过滤器,如

        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方法,该方法对定期约会执行定期扩展。

缺点是它不支持搜索筛选器。。。所以你必须分别过滤主题。

有人有更好的解决方案吗?如有任何帮助,我们将不胜感激。谢谢