如何使用Microsoft Graph API通过自定义列值查找SharePoint文档

时间:2019-01-25 23:12:23

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

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

到目前为止,我已经能够将所有文件保存在一个文件夹下

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;

在Graph Explorer中 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]中使用它?

1 个答案:

答案 0 :(得分:3)

我建议利用以下查询:

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
  

注意:https://graph.microsoft.com/beta/sites/{site-id}/drive   端点返回此站点的默认驱动器(文档库)

参考

Working with SharePoint sites in Microsoft Graph