如何在C#中通过Graph API利用DriveItem筛选SharePoint文档
解决方案
1. 通过文件名/文件夹名筛选文档(无需扩展DriveItem)
你不需要扩展driveitem来筛选名称,因为ListItem本身就包含Name属性(对应文档库中的文件名/文件夹名),直接修改Filter条件即可:
var resultat = await _client.Drives[driveId].List.Items.GetAsync((requestConfig) => { requestConfig.QueryParameters.Filter = $"Name eq '{name}'"; });
如果确实需要通过DriveItem关联筛选,注意Microsoft Graph的属性名是驼峰式的name(不是大写Name),修正后的代码如下:
var resultat = await _client.Drives[driveId].List.Items.GetAsync((requestConfig) => { requestConfig.QueryParameters.Filter = $"driveItem/name eq '{name}'"; requestConfig.QueryParameters.Expand = ["driveItem"]; });
2. 路径获取文档时返回空结果而非抛出异常
当通过路径获取文档时,捕获ServiceException并判断状态码为404时返回空结果:
try { var item = await _client.Drives[driveId].Items.ItemWithPath(path).GetAsync(); return item != null ? new List<DriveItem> { item } : new List<DriveItem>(); } catch (ServiceException ex) when (ex.StatusCode == System.Net.HttpStatusCode.NotFound) { return new List<DriveItem>(); }
若针对ListItem路径查询,逻辑一致:捕获404异常后返回空集合即可。
内容的提问来源于stack exchange,提问作者carlbolduc
相关产品推荐
相关产品推荐

