使用MAPITable优化批处理Outlook约会处理的可能方法

时间:2015-05-07 06:57:27

标签: outlook outlook-addin outlook-redemption

我在一个组件中工作,该组件将我们自己的约会数据与Outlook中选定的日历文件夹中的约会数据同步。

我们的约会第一次同步到Outlook时,我们约会的ID存储在新创建的Outlook约会的用户属性中。

因此,在将每个约会同步到Outlook之前,我们的代码必须检查Outlook中是否已经有一个具有其ID的约会。代码当前循环遍历Folder.Items集合并查看每个代码的UserProperties,这显然非常慢。

我找到了this stackoverflow question,这表明我可以查询MAPITable来过滤掉先没有用户属性的约会。

但是,随着越来越多的约会同步到Outlook加班,过滤后的结果也会变得非常大。

是否有人知道是否有更快的方式来浏览Outlook folde中所有约会的用户属性?

2 个答案:

答案 0 :(得分:2)

我有一个类似的问题,即使用一个名为'MyUserProperty'的olText类型的UserProperty来过滤约会。我使用了一个DASL查询,它使用UserProperty过滤了文件夹项目。

string myPropertyValue = "SomeID";
filter = "@SQL=\"http://schemas.microsoft.com/mapi/string/{00020329-0000-0000-C000-000000000046}/MyUserProperty/0x0000001F\" = '" + myPropertyValue + "' ";
filteredAppointment = myFolderItems.Find(filter);

MSDN文档:Filtering a Custom Field

答案 1 :(得分:1)

使用Items类的Find / FindNextRestrict方法,而不是整合文件夹中的所有项目。

查看以下文章,说明如何使用它们: