В моем приложении я обновляю существующие контакты или добавляю их, если их нет.Я проверяю идентификатор электронной почты контакта в папке контактов Outlook.Обновление или создание функциональности.Когда я использовал Outlook 2010, приложение работало нормально.При обновлении до Outlook 2016 для того же кода было выдано сообщение об ошибке.
То, что я пробовал для Outlook 2010 и работало до последнего обновления Outlook:
List<Contact> result = new List<Contact>();
result = con.Where(x => x.EmailAddresses[EmailAddressKey.EmailAddress1].Address.ToLower().Equals(email.ToLower())).ToList();
Этот запрос "Данный ключ былотсутствует в словаре »ошибка в строке результата = при обновлении Outlook до версии 2016.
// Получить все контакты из папки.Выбирает все контакты
if (contactItems.TotalCount > 0)
{
service.LoadPropertiesForItems(contactItems, view.PropertySet);
foreach (var item in contactItems.Items)
{
if (item is Contact)
{
con.Add(item as Contact);
}
}
}
// Поиск контакта, адрес электронной почты которого совпадает с
List<Contact> result = new List<Contact>();
result = con.Where(x => x.EmailAddresses.Contains(EmailAddressKey.EmailAddress1).Equals(email)).ToList();
Версия Outlook 2010:
result = con.Where(x => x.EmailAddresses[EmailAddressKey.EmailAddress1].Address.ToLower().Equals(email.ToLower())).ToList();
Это работало просто отлично
Обновленная версия Outlook 2016: Приведенная выше логика вызвала исключение Ключ не найден.Поэтому я изменил его на:
result = con.Where(x => x.EmailAddresses.Contains(EmailAddressKey.EmailAddress1).Equals(email)).ToList();
Я хочу проверить, где обе строки сравниваются с .ToLower, поскольку многие идентификаторы электронной почты имеют заглавные буквы.
Мои сомнения: Почему я получилОшибка?Версия меняет проблему здесь?