我正在编写Microsoft Graph OData查询以基于消息flagStatus获取邮件消息,以便在我的C#代码中重用工作查询。正确的查询应如何显示?
在Graph Explorer的示例帐户中尝试以下示例,其中所有消息的对象flag
的字段为flagStatus = "notFlagged"
。
https://graph.microsoft.com/v1.0/me/messages?$filter=flag/flagStatus eq 'notFlagged'
预计应该返回所有消息。但是结果是空数组被退回了。
如果在查询中我将eq
更改为ne
,则为
https://graph.microsoft.com/v1.0/me/messages?$filter=flag/flagStatus ne 'notFlagged'
然后返回所有消息。但是我认为在这种情况下,这里应该是空数组。
考虑到flag
对象可能尚未准备好进行过滤,我还尝试了$expand
它
https://graph.microsoft.com/v1.0/me/messages?$expand=flag&$filter=flag/flagStatus eq 'notFlagged'
但收到错误消息
类型'microsoft.graph.message'上的属性'flag'不是导航属性或复杂属性。只有导航属性可以展开。
因此可能不需要$expand
来进行标志过滤。但是,是否有可能完全根据消息的标志进行过滤?
如果考虑flag
对象可能为null且内部flagStatus
也可能为null的情况(至少在C#类Microsoft.Graph.FollowupFlag
属性FlagStatus
中可以为空),那么查询应如何满足下面的全部要求?
获取消息
flag
是null
flag/flagStatus
是null
flag/flagStatus
是'notFlagged'
答案 0 :(得分:0)
我遇到了同样的问题,可能按照建议可以为空。根据 followupFlag documentation,只有三种可能的状态,因此我针对其他两种状态(完整和已标记)使用了不相等和条件来解决这个问题。
https://graph.microsoft.com/v1.0/me/messages?$filter=flag/flagStatus ne 'flagged' and flag/flagStatus ne 'complete'