2015-05-07 9 views
0

Я работаю над компонентом, который синхронизирует наши собственные данные назначения с данными в выбранной папке календаря в Outlook.Возможные способы оптимизации пакетной обработки сообщений Outlook с помощью MAPITable

В первый раз, когда наши встречи синхронизируются с Outlook, идентификатор нашей встречи хранится в свойствах пользователя недавно созданного Outlook.

Поэтому перед тем, как синхронизировать каждую встречу с Outlook, наш код должен проверить, есть ли в Outlook еще одна встреча с идентификатором. В настоящее время код перемещается по коллекции Folder.Items и просматривает UserProperties каждого из них, это, очевидно, очень медленно.

Я нашел this stackoverflow question, что говорит о том, что я могу запросить MAPITable, чтобы отфильтровывать встречи, у которых нет свойств пользователя.

Однако, поскольку все больше и больше назначений синхронизируются с Outlook overtime, отфильтрованный результат также станет довольно большим.

Кто-нибудь знает, есть ли более быстрый способ пройти через пользовательские свойства всех назначений в складской папке Outlook?

ответ

2

У меня была аналогичная проблема с фильтрацией Назначений с использованием UserProperty, например, «MyUserProperty» типа olText. Я использовал запрос 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