Перспективы c # удалить все встречи - PullRequest
2 голосов
/ 27 сентября 2010
Microsoft.Office.Interop.Outlook.Application outlookApp = new Microsoft.Office.Interop.Outlook.Application();
Microsoft.Office.Interop.Outlook.MAPIFolder calendarFolder = outlookApp.Session.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderCalendar);

Console.WriteLine(calendarFolder.Items.Count);

foreach (Microsoft.Office.Interop.Outlook.AppointmentItem c in calendarFolder.Items)
{

        Console.WriteLine(c.Subject.ToString() + " " + c.Start.ToString() + " deleted");

        c.Delete();

}

Это удаляет встречи, но только патроны за раз, если вы продолжаете повторять это, это в конечном итоге удаляет их все ...

кто-нибудь знает, что происходит, я тоже сначала попытался отсортировать, без изменений -

Спасибо !!

после экспериментирования это сделал цикл в обратном направлении - не совсем понятно почему, однако

   Console.WriteLine(calendarFolder.Items.Count);
   Microsoft.Office.Interop.Outlook.Items calendarItems = calendarFolder.Items;
   //Microsoft.Office.Interop.Outlook.AppointmentItem app = calendarItems as  Microsoft.Office.Interop.Outlook.AppointmentItem;

   //for (int i = 1; i <= calendarFolder.Items.Count; i++)
   for (int i = calendarFolder.Items.Count; i > 0; i--)
    {
        calendarFolder.Items[i].Delete();

        //app = calendarFolder.Items[i];
        Console.WriteLine(i);
        //app.Delete();
    }

1 Ответ

1 голос
/ 20 января 2011

Это причина того, что цикл в обратном направлении исправил это. Допустим, у вас есть 100 элементов в списке, вы проверяете условие цикла for при каждой итерации

i = 0 count = 99
i = 1 count = 98
      ...
i = 50 count = 49

Цикл for заканчивается, но элементы 50-99 все еще существуют, поэтому итерация в обратном направлении не вызывает ошибку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...