Hola espero que esten bien.

Como puedo visualizar en in grid, o en un combo los nombres y/o correo electronico de mi lista global de direcciones de outlook, he encontrado ejemplos por mostrar uno este:

Código:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Outlook = Microsoft.Office.Interop.Outlook;
using System.Collections;



namespace WindowsFormsApplication3
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            Busqueda();           
        }

        public void Busqueda ()
        {
            const string PR_EMSMDB_SECTION_UID = "http://schemas.microsoft.com/mapi/proptag/0x3D150102";
           
            Outlook.Application app = new Outlook.Application();
            Outlook.NameSpace ns = app.GetNamespace("MAPI");
            ns.Logon("97016944@pep.pemex.com", "olan82", false, true);

            string accountName = "97016944@pep.pemex.com";
            string accountUID = "olan82";

            // Get UID for specified account name
            foreach (Outlook.Account acc in ns.Accounts)
            {
                if (String.Compare(acc.DisplayName, accountName, true) == 0)
                {
                    Outlook.PropertyAccessor oPAUser = acc.CurrentUser.PropertyAccessor;
                    accountUID = oPAUser.BinaryToString(oPAUser.GetProperty(PR_EMSMDB_SECTION_UID));
                    break;
                }
            }

            // Select GAL with matched UID
            foreach (Outlook.AddressList GAL in ns.AddressLists)
            {
                if (GAL.Name == "Lista global de direcciones")
                {
                    Outlook.PropertyAccessor oPAAddrList = GAL.PropertyAccessor;
                    if (accountUID == oPAAddrList.BinaryToString(oPAAddrList.GetProperty(PR_EMSMDB_SECTION_UID)))
                    {
                        
                        ArrayList Listado =new ArrayList();
                        

                        Listado.Add(GAL.AddressEntries);

                        dataGridView1.DataSource = Listado;

                         
                                           
                        foreach (Outlook.AddressEntry oEntry in GAL.AddressEntries)
                        {
                            // do something

                             
                            
                        }
                        break;
                        
                    }
                }
            }
        }
    }
}
el problema es que son mas 91000 registros y esto es muy lento.

o como buscar un nombre en la lista global y me de el correo electronico.

he buscado muchas cosas pero ninguna me conecta o no funciona o bien pasa lo del codigo anterio.

espero me puedan ayudar

agradezco de antemano su apoyo.