Microsoft Graph API 未从列表返回自定义列

Microsoft Graph API not returning custom column from list

在 VB.Net 工作,使用 Microsoft.Graph api 与共享点通信。

我在共享点网站上有一个列表。

假设:

列表名称:ListTestName

列:ListColumnTest1、ListColumnTest2、ListColumnTest3

Dim queryFields As List(Of QueryOption) = New List(Of QueryOption) From {New QueryOption("$expand", "fields")}
Dim items As IListItemsCollectionPage = Await GraphClient.Sites(sharepointSessionId).Lists("ListTestName").Items.Request(queryFields).GetAsync()

这是我必须获取列表并尝试获取所有字段(列)的代码,但是当我查看“Items”变量中的字段时,我没有看到任何我拥有的字段添加到列表中。我只看到共享点字段,例如“标题”或“Id”

我真的不明白为什么这不起作用。

即使我通过 graph-explorer 网站 (https://developer.microsoft.com/en-us/graph/graph-explorer) 查看时使用:

GET https://graph.microsoft.com/v1.0/sites/<SiteId's>/lists/ListTestName/items?expand=fields

我没有看到我的自定义列但是,如果我尝试直接过滤到这样的列之一:

GET https://graph.microsoft.com/v1.0/sites/<SiteId's>/lists/ListTestName/items?expand=fields(select=ListColumnTest1)

这似乎确实返回了我的自定义字段。

因此我尝试添加到查询字段 {New QueryOption("$expand", "fields(select=ListColumnTest1")} 这在我调用请求时崩溃了。

编辑:我问这个问题有点不对,我会发布第二个更符合我需要的问题。但是,下面的问题被标记为正确,因为他们的解决方案是我所问问题的正确解决方案。 :)

我会避免创建 QueryOption。尝试使用 Expand 和 Select 方法。

示例(C#...抱歉我不熟悉 VB 但我希望您可以轻松重写它):

await GraphClient.client.Sites[sharepointSessionId].Lists["ListTestName"].Items.Request()
            .Expand(x => new
                    {
                        ListColumnTest1 = x.Fields.AdditionalData["ListColumnTest1"],
                        ListColumnTest2 = x.Fields.AdditionalData["ListColumnTest2"]
                    })
            .Select(x => new
                    {
                        ListColumnTest1 = x.Fields.AdditionalData["ListColumnTest1"],
                        ListColumnTest2 = x.Fields.AdditionalData["ListColumnTest2"]
                    })
            .GetAsync();

你试过这个端点了吗?

GET https://graph.microsoft.com/v1.0/sites/{site-id}/lists/{list-id}?expand=columns,items(expand=fields)

我可以使用此端点获取自定义列。

更新:

IListColumnsCollectionPage columns = graphClient.Sites["b57886ef-vvvv-4d56-ad29-27266638ac3b,b62d1450-vvvv-vvvv-84a3-f6600fd6cc14"].Lists["538191ae-7802-43b5-90ec-c566b4c954b3"].Columns.Request().GetAsync().Result;