使用OData $ filter通过flagStatus获取Microsoft Graph消息

时间:2019-01-10 16:23:58

标签: odata microsoft-graph

我正在编写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中可以为空),那么查询应如何满足下面的全部要求?

获取消息

  1. flagnull
  2. flag/flagStatusnull
  3. flag/flagStatus'notFlagged'

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,可能按照建议可以为空。根据 followupFlag documentation,只有三种可能的状态,因此我针对其他两种状态(完整和已标记)使用了不相等和条件来解决这个问题。

https://graph.microsoft.com/v1.0/me/messages?$filter=flag/flagStatus ne 'flagged' and flag/flagStatus ne 'complete'