我在一个组件中工作,该组件将我们自己的约会数据与Outlook中选定的日历文件夹中的约会数据同步。
我们的约会第一次同步到Outlook时,我们约会的ID存储在新创建的Outlook约会的用户属性中。
因此,在将每个约会同步到Outlook之前,我们的代码必须检查Outlook中是否已经有一个具有其ID的约会。代码当前循环遍历Folder.Items集合并查看每个代码的UserProperties,这显然非常慢。
我找到了this stackoverflow question,这表明我可以查询MAPITable来过滤掉先没有用户属性的约会。
但是,随着越来越多的约会同步到Outlook加班,过滤后的结果也会变得非常大。
是否有人知道是否有更快的方式来浏览Outlook folde中所有约会的用户属性?
答案 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)