如何从foreach c#中获取检查点记录和处理剩余数据

how to take checkpoint record and process remaining data from foreach c#

我有多个文件要从列表中处理。

如果由于任何原因列表被中断,当我们下次执行程序时,它会获取最后执行的记录并开始处理更多的记录,而不是从 0 索引开始。

CamlQuery camlQuery = new CamlQuery();
camlQuery.ViewXml = @"<View Scope='RecursiveAll'>
                            <Query>
                            </Query>
                        </View>";
camlQuery.FolderServerRelativeUrl = folder.ServerRelativeUrl;
ListItemCollection listItems = list.GetItems(camlQuery);
clientContext.Load(listItems);
clientContext.ExecuteQuery(); 

foreach (var item in listItems)
{
    if (item.FileSystemObjectType == FileSystemObjectType.File)
    {

例如我有10个文件要处理。 在每个文件之后我将文件名保存到日志中所以我最后执行了文件名。 如果由于任何原因程序关闭,当我们 运行 下次它应该处理下一个文件而不是从头开始处理它。

我可以做些什么,比如这里的检查点?

如果可以,请在 SharePoint 列表或文档库中添加一列以保存已处理或未处理的状态。然后您只需要更新您的 CAML 查询,以便它提取所有尚未处理的记录。然后在您的 foreach 循环中更新您刚刚处理的记录并更新其状态。

这样,将处理新记录,并且不会在您的 CAML 查询中提取已处理的记录。这也确保您不会检索已经处理过的记录。