使用Graph SDK在SharePoint中能否仅按文件名搜索文件?
你的问题在于默认的Search方法会全局检索文件的内容、元数据等所有字段,要限定只搜索文件名,有两种可靠的实现方式:
方法1:使用filename:搜索限定符
Graph API的搜索语法支持通过filename:前缀指定仅匹配文件名,直接修改你的搜索语句即可,这种方式会自动递归搜索整个驱动器下的所有子文件夹:
var request = _graphServiceClient .Drives[id] .Root .Search($"filename:{searched}") .Request();
如果需要模糊匹配(比如文件名包含关键词),可以直接在关键词前后加通配符*:
var request = _graphServiceClient .Drives[id] .Root .Search($"filename:*{searched}*") .Request();
方法2:使用Filter精准筛选文件名
如果只需要搜索指定目录下的文件(不递归子文件夹),可以用Filter结合contains或startswith方法直接过滤name字段:
// 匹配文件名包含指定关键词的文件(仅当前目录) var request = _graphServiceClient .Drives[id] .Root .Children .Request() .Filter($"contains(name, '{searched}')");
如果需要递归搜索所有子文件夹,你需要自己实现递归遍历逻辑,或者结合Expand("children")处理多层目录(注意分页限制)。
注意事项
- 如果搜索关键词包含特殊字符(如单引号、空格),需要先进行转义处理,避免Graph API请求语法错误。
- 两种方式中,方法1更贴近你原本的递归搜索需求,方法2适合精确限定目录的场景。
内容的提问来源于stack exchange,提问作者ntiany
相关产品推荐
相关产品推荐

