Microsoft Graph-搜索OneDrive

时间:2019-10-03 19:31:42

标签: c# sharepoint microsoft-graph

基于Microsoft Graph REST API documentation,我们拥有Xamarin / C#代码,如下所示:

var graphClient = new GraphServiceClient(
   new DelegateAuthenticationProvider(
      (requestMessage) =>
         {
            requestMessage.Headers.Authorization = new AuthenticationHeaderValue("bearer", accessToken);
            return (Task.FromResult(0));
         }
      ));
IDriveItemSearchCollectionPage search = await graphClient.Me.Drive.Root
   .Search("{search-query}")
   .Request()
   .GetAsync();

问题是,我找不到任何有关“ {search-query}”的文档。通过反复试验,看来:

  1. 搜索“ A”将查找名称或内容中包含“ A”的所有文件
  2. 搜索“ {search-query}”会返回几个文件,我不知道为什么
  3. 即使我有一些名称中包含“ A”的文件,搜索“ filename:A”也不会返回

我要搜索名称中包含某个子字符串的所有文件,但是如果我搜索“ *”或“ filename:A *”或“ filename:A%2A”,则会引发ServiceException,代码为UnknownError。 / p>

问题1 :如何将通配符传递给Search()函数?

然后,当我得到结果时,它就是一个Microsoft.Graph.DriveItemSearchCollectionPage,我可以通过它来枚举并得到一堆DriveItem对象。 DriveItem有一个名为“文件夹”的属性,有时为非空,但它是类型为Microsoft.Graph.Folder的对象,并且Intellisense表示无法获取名称。夹。而且当前版本的Visual Studio Mac有点麻烦,如果我右键单击一个文件夹并选择“转到声明”,它将立即挂起并使用100%CPU,并且永不返回,我必须强制退出。

问题2 :当我拥有Microsoft.Graph.Folder时如何获取文件夹的名称?

1 个答案:

答案 0 :(得分:0)

我对云端硬盘搜索查询语法不熟悉。

我可以说,如果Folder属性为非null,则表明DriveItem是一个文件夹。您将使用DriveItem.Name获取文件夹的名称。