Search code examples
c#exchangewebservicescontacts

If statement failing due to unrelated change to another IF statement


When the check against the emailaddress is added to the if statement, as per below, the if statement if (origin.Equals(true)).

bool origin = false;
                    Contact contact = item as Contact;
                    foreach (Item subItem in contactItems)
                    {

                        Contact subcontact = subItem as Contact;

                        if ((contact.DisplayName.Equals(subcontact.DisplayName) || (contact.DisplayName is null && subcontact.DisplayName is null)) && ((contact.CompanyName is null && subcontact.CompanyName is null) || (contact.CompanyName.Equals(subcontact.CompanyName)) && ((contact.EmailAddresses[EmailAddressKey.EmailAddress1] is null && subcontact.EmailAddresses[EmailAddressKey.EmailAddress1] is null) || (contact.EmailAddresses[EmailAddressKey.EmailAddress1].Equals(subcontact.EmailAddresses[EmailAddressKey.EmailAddress1])))))
                        {
                            if (origin.Equals(true))
                            {

                                try
                                {
                                    Console.WriteLine(contact.DisplayName + " " + subcontact.DisplayName);
                                    Console.WriteLine(contact.EmailAddresses[EmailAddressKey.EmailAddress1]);
                                    subcontact.Delete(DeleteMode.HardDelete);

                                }
                                catch
                                {
                                    Console.WriteLine("Cannot delete" + " " + subcontact.DisplayName);

                                }
                            }
                            origin = true;
                        }
                    }

If I remove the if (origin.Equals(true)) or removed && ((contact.EmailAddresses[EmailAddressKey.EmailAddress1] is null && subcontact.EmailAddresses[EmailAddressKey.EmailAddress1] is null) || (contact.EmailAddresses[EmailAddressKey.EmailAddress1].Equals(subcontact.EmailAddresses[EmailAddressKey.EmailAddress1])) from the other if statement, the contact goes through the try-catch block.

Can anyone see why?


Solution

  • Thanks for all the potential answers unfortunately they didn't fix the issue, the code is much easier to read though! In the end I separated the email address check to another IF statement which seems to be working