public static PeopleIdentity[] ToPeopleIdentityArray(this ADRecipientOrAddress[] addresses) { List <PeopleIdentity> list = new List <PeopleIdentity>(); if (addresses != null && addresses.Any <ADRecipientOrAddress>()) { Dictionary <string, ADRecipient> dictionary = new Dictionary <string, ADRecipient>(StringComparer.OrdinalIgnoreCase); IEnumerable <string> legacyDNs = from address in addresses where address.RoutingType == "EX" select address.Address; IEnumerable <ADRecipient> enumerable = RecipientObjectResolver.Instance.ResolveLegacyDNs(legacyDNs); if (enumerable != null && enumerable.Any <ADRecipient>()) { foreach (ADRecipient adrecipient in enumerable) { if (!dictionary.ContainsKey(adrecipient.LegacyExchangeDN)) { dictionary.Add(adrecipient.LegacyExchangeDN, adrecipient); } } } IEnumerable <string> addresses2 = from address in addresses where address.RoutingType == "SMTP" select address.Address; enumerable = RecipientObjectResolver.Instance.ResolveSmtpAddress(addresses2); if (enumerable != null && enumerable.Any <ADRecipient>()) { foreach (ADRecipient adrecipient2 in enumerable) { string key = adrecipient2.PrimarySmtpAddress.ToString(); if (!dictionary.ContainsKey(key)) { dictionary.Add(key, adrecipient2); } } } foreach (ADRecipientOrAddress adrecipientOrAddress in addresses) { ADRecipient entry = null; if (dictionary.TryGetValue(adrecipientOrAddress.Address, out entry)) { list.Add(entry.ToPeopleIdentity()); } else { list.Add(adrecipientOrAddress.ToPeopleIdentity()); } } } if (!list.Any <PeopleIdentity>()) { return(null); } return(list.ToArray()); }