C# 如何在一个驱动器中搜索特定文件夹中的项目?
我正在使用Microsoft Graph操作OneDrive中的文件。我需要搜索特定文件夹中的文件,如果该文件存在,请删除该文件 我使用下面的代码来搜索文件,它给出了整个驱动器的搜索结果C# 如何在一个驱动器中搜索特定文件夹中的项目?,c#,microsoft-graph-api,onedrive,C#,Microsoft Graph Api,Onedrive,我正在使用Microsoft Graph操作OneDrive中的文件。我需要搜索特定文件夹中的文件,如果该文件存在,请删除该文件 我使用下面的代码来搜索文件,它给出了整个驱动器的搜索结果 var checkIfExists = this.graphClient .Me .Drive .Search(item["FileName"].ToString()) .Request() .GetAsync() .Result; 我只需要在特定文件夹中搜索文件,例如仅在重复文件夹中搜索文件。由
var checkIfExists = this.graphClient
.Me
.Drive
.Search(item["FileName"].ToString())
.Request()
.GetAsync()
.Result;
我只需要在特定文件夹中搜索文件,例如仅在重复文件夹中搜索文件。由于驱动器是表示用户的一个驱动器的顶级资源,因此它与称为DriveItems的其他项目有关系。驱动器项可以是存储在驱动器中的任何内容、文件、文件夹或任何其他项 因此,要在驱动器内搜索特定文件,您可以发出请求
var driveItems = await graphClient.Me.Drive.Root
.Search(<'{search-query}'>)
.Request()
.GetAsync();
由于驱动器是表示用户的一个驱动器的顶级资源,因此它与其他项目(称为DriveItems)有关系。驱动器项可以是存储在驱动器中的任何内容、文件、文件夹或任何其他项 因此,要在驱动器内搜索特定文件,您可以发出请求
var driveItems = await graphClient.Me.Drive.Root
.Search(<'{search-query}'>)
.Request()
.GetAsync();
您可以将搜索范围限定到您喜欢的任何路径。例如,使用默认数据集,我们可以使用以下查询在整个驱动器中搜索
finance
:
https://graph.microsoft.com/v1.0/me/drive/root/search(q='finance')?select=name,id,webUrl
如果我们希望只在单个子文件夹下搜索(例如/CR-227 Project/
),那么我们可以使用该路径作为起点:
https://graph.microsoft.com/v1.0/me/drive/root:/CR-227 Project:/search(q='finance')?select=name,id,webUrl
此外,如果我们知道/CR-227项目/
(01BYE5RZ6TAJHXA5GMWZB2HDLD7SNEXFFU)的DriveItem.Id
),那么我们可以使用该Id而不是路径:
https://graph.microsoft.com/v1.0/me/drive/items/01BYE5RZ6TAJHXA5GMWZB2HDLD7SNEXFFU/search(q='finance')?select=name,id,webUrl
您可以将搜索范围限定到您喜欢的任何路径。例如,使用默认数据集,我们可以使用以下查询在整个驱动器中搜索finance
:
https://graph.microsoft.com/v1.0/me/drive/root/search(q='finance')?select=name,id,webUrl
如果我们希望只在单个子文件夹下搜索(例如/CR-227 Project/
),那么我们可以使用该路径作为起点:
https://graph.microsoft.com/v1.0/me/drive/root:/CR-227 Project:/search(q='finance')?select=name,id,webUrl
此外,如果我们知道/CR-227项目/
(01BYE5RZ6TAJHXA5GMWZB2HDLD7SNEXFFU)的DriveItem.Id
),那么我们可以使用该Id而不是路径:
https://graph.microsoft.com/v1.0/me/drive/items/01BYE5RZ6TAJHXA5GMWZB2HDLD7SNEXFFU/search(q='finance')?select=name,id,webUrl
您建议的搜索查询提供搜索集合页面,如果文件存在于多个文件夹中,则返回所有结果,这将很难找到要删除的文件。我希望您使用的搜索查询正确吗?我在代码片段中放的是占位符。我是graph api的新手,请您建议搜索查询。让名为“abc.pdf”的文件在文件夹中重复搜索。“abc.pdf”文件也位于另一个文件夹附件中。我不想包含附件文件夹中的搜索结果。我已使用代码段更新了答案。希望有帮助。Where条件引发异常:对象引用未设置为对象的实例。无论是否找到匹配项,driveItem.ParentReference.Name每次都返回null。您建议的搜索查询将提供搜索集合页,如果文件存在于多个文件夹中,则返回所有结果,这将很难找到要删除的文件。我希望您使用的搜索查询正确吗?我在代码片段中放的是占位符。我是graph api的新手,请您建议搜索查询。让名为“abc.pdf”的文件在文件夹中重复搜索。“abc.pdf”文件也位于另一个文件夹附件中。我不想包含附件文件夹中的搜索结果。我已使用代码段更新了答案。希望有帮助。Where条件引发异常:对象引用未设置为对象的实例。无论是否找到匹配项,driveItem.ParentReference.Name每次都返回null。您确实需要搜索特定文件夹(及其所有子文件夹),还是只需要知道具有特定名称的文件是否是特定文件夹的子文件夹?搜索可能会过度。我实际上需要在文件夹中搜索文件名。您确实需要搜索特定文件夹(及其所有子文件夹),还是只需要知道具有特定名称的文件是否是特定文件夹的子文件夹?搜索可能有些过度,我实际上需要在文件夹中搜索文件名。