c# - 如何使用 Microsoft Graph API 按自定义列值查找 SharePoint 文档

标签 c# rest api microsoft-graph-api sharepoint-online

在 SharePoint Online 站点中,通过我的 Office 365 帐户,我在我的文档中添加了一列 - “CustomerId”。我想在 C# 中(而不是在 JavaScript 中)查找 CustomerId 为 102 的所有文档。

到目前为止,我能够获取一个文件夹下的所有文件

var files = graphClient.Sites[siteId].Drive.Items[driveItemId]
            .Children.Request().GetAsync().Result;

或者在 Graph Explorer 中看到同样的结果 https://graph.microsoft.com/v1.0/sites/{siteId}/drive/items/{driveItemId}/children

但我还没有找到使用 C# 或 Graph Explorer 中的自定义列筛选条件获取所有文档 (driveIems) 的正确语法。我尝试过的事情的例子:

在 C# 中

var files = graphClient.Sites[siteId].Drive.Items[driveItemId]
            .Search("fields/CustomerId eq 102").Request().GetAsync().Result;

在图形资源管理器中 https://graph.microsoft.com/v1.0/sites/{siteId}/drive/items/{driveItemId}/search(q='CustomerId eq 102')

希望有人能帮我解决这个问题。

更新:
以前我从 driveItemId 得到

var customerFolder = graphClient.Sites[siteId].Drive.Root
    .ItemWithPath("CustomerGroup/IndustryGroup").Request().GetAsync().Result;
string driveItemId = customerFolder.Id;

我知道我可以得到一个 ListItem

var customerFolder = graphClient.Sites[siteId].Drive.Root
    .ItemWithPath("CustomerGroup/IndustryGroup").Request()
    .Expand(d => d.ListItem).GetAsync().Result;

但我只从 customerFolder.ListItem.Id 中找到了一个列表 ID 为“4”的列表

如何获取列表 ID 以便在 graphClient.Sites[siteId].Lists[listId] 中使用它?

最佳答案

我建议使用以下查询:

https://graph.microsoft.com/v1.0/sites/{site-id}/lists/{list-id}/items?filter=fields/CustomerId eq 123&expand=driveItem

解释:

  • 通过filter 查询选项过滤列表中的项目
  • 通过expand 查询选项返回列表项的关联驱动器项

这是 msgraph-sdk-dotnet 的示例:

var request = await graphClient.Sites[siteId].Lists[listId].Items.Request().Filter("fields/CustomerId eq 123").Expand(item => item.DriveItem).GetAsync();
foreach (var item in request)
{
    Console.WriteLine(item.DriveItem.WebUrl);
}

更新

驱动器的基础文档库列表(及其属性)可以像这样检索:

var list = await graphClient.Sites[siteId].Drive.List.Request().GetAsync();
Console.WriteLine(list.Id);  //gives SharePoint List Id

Note: https://graph.microsoft.com/beta/sites/{site-id}/drive endpoint returns the default drive (document library) for this site

引用

Working with SharePoint sites in Microsoft Graph

关于c# - 如何使用 Microsoft Graph API 按自定义列值查找 SharePoint 文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54374019/

相关文章:

java - JsonView 无法与 Spring 一起正常工作

java - 使用 Java 将数据发送到 Microsoft Word 文档

javascript - 在 Angular JS 1.6 中处理 JSONP 响应

javascript - 如何在 Javascript 中使用 Wordnik API 获取随机词?

c# - 通用类型作为变量

c# - 将 Guid 列表存储在 MongoDb 中作为字符串列表

c# - 自引用构造函数。这个图案有味道吗?

c# - 在 Unity 中使用 DLL,MonoBehaviour

javascript - 如何限制 ember.js 中 findAll 的结果?

java - 为什么 Jackson 的 PropertyGenerator 会阻止递归循环