You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Microsoft Graph v5.0如何获取SharePoint列表全部项?

如何获取SharePoint列表的全部项?

Microsoft Graph API 查询SharePoint列表时默认采用分页机制,每页最多返回200条数据。要获取列表中的全部项,你需要处理分页逻辑,循环请求直到没有下一页数据为止。

解决方案1:使用Graph SDK的PageIterator(推荐)

这是SDK封装好的分页工具,代码更简洁:

// 初始化列表存储所有项
var allItems = new List<Microsoft.Graph.Models.ListItem>();

// 创建分页迭代器
var pageIterator = PageIterator<ListItem, ListItemCollectionResponse>.CreatePageIterator(
    graphClient,
    // 发起初始请求,设置每页最大条目数(最多500条)
    await graphClient.Sites[siteId].Lists[listId].Items.GetAsync((requestConfiguration) =>
    {
        requestConfiguration.QueryParameters.Expand = new string[]
        {
            "fields($select=_x0421__x0434__x0440_,_x0421__x0435__x043a__x0446__x04," +
            "_x041f__x043e__x0432__x0435__x04,_x041a__x043e__x0440__x043f__x04,_x0417__x0430__x0445__x0432__x04,_x0420__x043e__x0437__x0446__x04," +
            "Title,_x041e__x0434__x002e__x0432__x04,_x041a__x0456__x043b__x044c__x04," +
            "_x041a__x0456__x043b__x044c__x040,_x041f__x0456__x0434__x0440__x04," +
            "_x041f__x0440__x0438__x043c__x04)"
        };
        requestConfiguration.QueryParameters.Top = 500;
    }),
    // 处理每一项,添加到总列表
    (item) =>
    {
        allItems.Add(item);
        return true;
    }
);

// 执行迭代,获取所有数据
await pageIterator.IterateAsync();

// allItems 现在包含列表中的全部项

解决方案2:手动处理分页

如果需要更灵活的控制逻辑,可以手动循环请求下一页:

var allItems = new List<Microsoft.Graph.Models.ListItem>();
ListItemCollectionResponse response = null;
string nextPageLink = null;

do
{
    if (string.IsNullOrEmpty(nextPageLink))
    {
        // 第一次请求,设置每页最大500条
        response = await graphClient.Sites[siteId].Lists[listId].Items.GetAsync((requestConfiguration) =>
        {
            requestConfiguration.QueryParameters.Expand = new string[]
            {
                "fields($select=_x0421__x0434__x0440_,_x0421__x0435__x043a__x0446__x04," +
                "_x041f__x043e__x0432__x0435__x04,_x041a__x043e__x0440__x043f__x04,_x0417__x0430__x0445__x0432__x04,_x0420__x043e__x0437__x0446__x04," +
                "Title,_x041e__x0434__x002e__x0432__x04,_x041a__x0456__x043b__x044c__x04," +
                "_x041a__x0456__x043b__x044c__x040,_x041f__x0456__x0434__x0440__x04," +
                "_x041f__x0440__x0438__x043c__x04)"
            };
            requestConfiguration.QueryParameters.Top = 500;
        });
    }
    else
    {
        // 请求下一页数据
        response = await graphClient.Sites[siteId].Lists[listId].Items.WithUrl(nextPageLink).GetAsync();
    }

    // 将当前页的项添加到总列表
    if (response.Value != null)
    {
        allItems.AddRange(response.Value);
    }

    // 更新下一页链接
    nextPageLink = response.OdataNextLink;

} while (!string.IsNullOrEmpty(nextPageLink));

// allItems 包含列表中的所有项

关键说明

  • 可以通过Top参数设置每页最大返回500条数据,这是Graph API对SharePoint列表的上限,能减少请求次数。
  • 分页的核心是检查响应中的OdataNextLink字段:如果存在该字段,说明还有未返回的数据,需要继续请求该链接;如果为空,说明所有数据已获取完成。

内容的提问来源于stack exchange,提问作者Invop

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 07:58:29