在GraphExplorer上运行的Graph API过滤器在SDK上不起作用

问题描述

https://graph.microsoft.com/v1.0/me/onenote/notebooks?filter=tolower(name) eq“我的笔记本”如何工作@H_502_1@

Screenshot from Graph Explorer @H_502_1@

,当我尝试用C#编写相同代码时,出现以下错误 代码:BadRequest 消息:无效的过滤子句 内部错误: 附加数据: 日期:2020-09-02T20:01:24 @H_502_1@

我正在使用以下代码。@H_502_1@

var NoteBook =等待GraphClient.Me.Onenote.Notebooks.Request()。Filter($“ name eq'My Notebook'”)。GetAsync(); @H_502_1@

解决方法

它不适用于https://graph.microsoft.com/v1.0/me/onenote/notebooks?filter=tolower(name) eq 'my notebook'。您错过了$之前的filter=xxx

正确的应该是https://graph.microsoft.com/v1.0/me/onenote/notebooks?$filter=tolower(displayName) eq 'my notebook'

没有名为name的属性。因为过滤器不起作用,所以可以得到结果。您列出了所有笔记本。正确的是displayName

但是在SDK中,笔记本类中没有定义属性name。这就是使用SDK时出现错误的原因。

在SDK中,您应该使用以下代码:

var NoteBook = await graphClient.Me.Onenote.Notebooks.Request().Filter($"displayName eq 'My Notebook'").GetAsync();