2013-06-12 3 views
1

Я просто хочу, чтобы фильтровать почту с Ограничить-метод, как так:Outlook.Items Ограничить() странно поведение

  restriction += "[ReceivedTime] < '" + ((DateTime)time).ToString("yyyy-MM-dd HH:mm") + "'"; 
      var count = oFolder.Items.Restrict(restriction).Count;//Cast<object>().ToList(); 
      for (int i = 0; i < count; i++) 
      { 
       var crntReceivedTime = ((OutLook.MailItem)oFolder.Items.Restrict(restriction).Cast<object>().ToList()[i]).ReceivedTime; 
       if (crntReceivedTime > time) 
       { 
        string t = ""; 
       } 
      } 

Теоретически линию string t = ""; никогда не следует называть, потому что я определил деталь никогда не имеет записи, значение ReceivedTime которых больше time. Проблема заключается в вызове строки, что означает, что ограниченная коллекция элементов содержит записи, которые ее не должны содержать.

Я сделал что-то неправильно или Restrict() -method просто не удалось?

ответ

2

Во-первых, вы используете несколько точечных обозначений. Вы вызываете Restrict (что дорого, даже если он вызывается один раз) на каждом шаге цикла. Вызовите его один раз, кешируйте возвращенную (ограниченную) коллекцию Items, а затем переберите элементы в этой коллекции.

Во-вторых, какое полное ограничение? Вы используете + =, чтобы добавить дополнительное ограничение на ReceivedTime. Какова фактическая величина переменной ограничения?

Edit: У меня не было никаких проблем со следующим сценарием выполнен из OutlookSpy (нажмите кнопку Script, вставьте скрипт, нажмите Run):

restriction = " [ReceivedTime] < '2011-06-11 00:00' " 
set Folder = Application.ActiveExplorer.CurrentFolder 
set restrItems = Folder.Items.Restrict(restriction) 
for each item in restrItems 
    if TypeName(item) = "MailItem" Then 
    Debug.Print item.ReceivedTime & " - " & item.Subject 
    End If 
next 
+0

К вашему первому пункту: Это было только для целей тестирования (все for loop), вот почему im использует способ с наименьшим кодом. Второй момент: Thats полное ограничение, я планирую добавить больше ограничений, вот почему я начинаю с 'ограничения =" ";' и чем продолжать добавлять больше. Но на данный момент эта первая строка является целым ограничением. –

+0

Итак, какова была дата ограничения и что было значением ReceivedTime, которое не удовлетворяло ограничениям, но было возвращено, тем не менее? –

+0

Дата ограничения была дата 2013-06-11 00:00, ReceivedTime - 2013-11-11 11:39. –

 Смежные вопросы

  • Нет связанных вопросов^_^