我必须将我的数据库 pkid 保存到 outlook。我使用了 UserProperties["TaskId"]
。我试图通过这个 id 找到该项目,但下面的代码不起作用
tasksFolder.Items.Find(string.Format("[TaskId] = '{0}'", id))
有没有办法找到我的项目,而不是在我所有的列表中循环? 有没有更好的办法在outlook上保存Database id,EntryID是只读的。
最佳答案
您可以利用在后台运行的 AdvancedSearch
。
准确地说,您可以使用 Application.AdvancedSearch
启动异步搜索任务(参见 documentation here)
string scope
参数实际上是执行搜索的 Outlook 文件夹。我认为您可能会使用默认任务文件夹(请参阅 olDefaultFolder )
在您的情况下,您必须使用 CustomField 创建查询。这是语法(未测试)。这个奇怪的 0x0000001f
实际上是 CustomProperties
的内部 ID,see
"http://schemas.microsoft.com/mapi/string/{00020329-0000-0000-C000-000000000046}/TaskId/0x0000001f = 'yourid'"
请注意,使用 AdvancedSearch
,您可以在后台执行搜索任务,而不会卡住 UI 线程。我建议您使用 ID 来标识您的搜索,这样您就不会搞乱并发搜索或取消。
关于c# - 通过 UserProperties 搜索 outlook 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36134056/