Esto es útil por ejemplo cuando realizamos una migración y las carpetas quedan cambiadas, es decir tenemos un "Calendar" y un "Calendario".
string usuario = "";
string pass = "";
string servidorCorreo = "";
string correoUsuario = "";
string dominio = "";
string origen = "Calendar"
string destino = "Calendario"
ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1);
 service.Url = new Uri("https://" + servidorCorreo +"/ews/exchange.asmx");
 service.Credentials = new NetworkCredential(usuario, pass, dominio);
 service.ImpersonatedUserId = new ImpersonatedUserId(ConnectingIdType.SmtpAddress, correoUsuario);
 FolderView view = new FolderView(200);
 view.Traversal = FolderTraversal.Deep;
 
 FindFoldersResults findFolderResults = service.FindFolders(WellKnownFolderName.Root, view);
 FolderId elid = null;
 FolderId idDestino = null;
 foreach (Folder myFolder in findFolderResults.Folders)
 {
     if (myFolder != null)
     {
         if (myFolder.DisplayName != null)
         {
             if (myFolder.DisplayName.CompareTo(origen) == 0)
                 elid = myFolder.Id;
             if (myFolder.DisplayName.CompareTo(destino) == 0)
             {
                 idDestino = myFolder.Id;
             }
         }
     }
 }
 FindItemsResults<Item> findResults = service.FindItems(elid, new ItemView(5000));
 IEnumerable<ItemId> itemIds = from item in findResults
                               select item.Id;
 Console.WriteLine("Moviendo items desde: " + origen + " " + destino);
 if (idDestino == null) //Si no se especifica un destino se toma el Calendario de sistema como destino
       service.MoveItems(itemIds, WellKnownFolderName.Calendar);
 else
       service.MoveItems(itemIds, idDestino);
 
 
