【发布时间】:2017-07-05 15:38:21
【问题描述】:
我可以将联系人添加到通讯簿,但由于某种原因我无法将其删除。我正在执行的代码如下。
String abName = "Name ofthe targetted address book";
Outlook.Folder addressBook;
if (targetFolder.Folders.OfType<Outlook.Folder>().Any(element
=> element.Name == abName))
addressBook = targetFolder.Folders[abName] as Outlook.Folder;
else
addressBook = targetFolder.Folders.Add(
abName, Outlook.OlDefaultFolders.olFolderContacts) as Outlook.Folder;
addressBook.ShowAsOutlookAB = true;
for (int i = addressBook.Items.Count - 1; i >= 0; i--)
if (!stringList.Any(element
=> element == addressBook.Items.OfType<Outlook.ContactItem>()
.ToList()[i].Email1Address))
addressBook.Items.OfType<Outlook.ContactItem>().ToList().RemoveAt(i);
地址簿的获取和字符串的匹配也有效。我进入 RemoveAt 行以获得完全正确的联系人。执行删除时没有错误或其他消息。不过,联系人列表不受影响。
- 为什么?
- 如何才能真正删除联系人?
我怀疑我可能正在处理包含联系人的实际列表的副本。问题是如果我不创建 List,我不确定如何更改联系人列表。
因此,最有帮助的答案将阐明如何在特定条件下更改 addressBook(或者可能是 addressBook.Items)。例如,假设我们要删除所有姓名以字母“Q”开头的联系人。
此时我只能想到一个超级丑陋的解决方法,而且它是如此丑陋,以至于我什至不在这里提及它。真丑……
【问题讨论】:
标签: c# vsto outlook-addin outlook-2010