0

我一直在尝试从包含超过 200 万个项目的 Outlook 公用文件夹中检索要删除的项目。然而,即使页面大小为 10,FindItems 也需要永远返回,就好像它正在查询文件夹中的每个项目一样。到现在2小时后还没有回来。有没有办法阻止它这样做?

var folder = GetPublicFolder(service);
folder.Load();
var items = folder.FindItems(new ItemView(10)
    {
        Traversal = ItemTraversal.Shallow
    });
4

1 回答 1

0

从这么大的文件夹中检索项目的唯一方法是在查找项目时使用 PropertySet.IdOnly 并相应地调整批量大小。如果没有超时,我也无法对此进行任何过滤。

items = folder.FindItems(new ItemView(100)
                {
                    Traversal = ItemTraversal.Shallow,
                    PropertySet = PropertySet.IdOnly
                });

service.LoadPropertiesForItems(items, new PropertySet(ItemSchema.DateTimeReceived, 
                    ItemSchema.Subject));

然后对批次进行迭代,对项目做你想做的事情,同时将你加载的内容保持在最低限度。由于无法过滤,您只能从顶部抓取项目,因此要执行大多数操作,您需要在批次之间将已处理的项目移动到单独的文件夹中。

于 2012-04-23T23:18:39.263 回答