前景.Items Restrict()奇怪的行为
本文关键字:Items Restrict 前景 | 更新日期: 2023-09-27 18:18:06
我只想用Restrict-Method来过滤我的邮件,就像这样:
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 = "";
行永远不应该被调用,因为我确定Items的ReceivedTime的值永远不会大于time
。问题是行被调用了,这意味着受限制的Items Collection包含了它不应该包含的条目。
我做错了什么还是Restrict()
方法只是失败?
首先,您正在使用多个点表示法。在循环的每一步都调用Restrict
(即使调用一次也是昂贵的)。调用它一次,缓存返回的(受限制的)Items集合,然后循环遍历该集合中的项。
其次,完整的限制是什么?您正在使用+=在ReceivedTime
上添加额外的限制。限制变量的实际值是多少?
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