Outlook事件列表的OData无法按“Id”排序

问题描述 投票:2回答:1

我尝试在this documentation之后从Microsoft Graph获取事件列表。

我想通过lastModifiedDateTimeid订购清单。

以下是示例查询:

var getResource = string.Format("/me/calendar/events/?$filter=lastModifiedDateTime ge {0}&$orderBy=lastModifiedDateTime, id", XmlConvert.ToString(updatedMin, XmlDateTimeSerializationMode.Utc));

但是,当我执行它时,会导致错误:

{
  "error": {
    "code": "ErrorInvalidProperty",
    "message": "The property 'Id' does not support filtering.",
    "innerError": {
      "request-id": "bb56a0d0-46f3-4b7c-80bd-043a0b3fd8b5",
      "date": "2018-09-17T15:23:40"
    }
  }
}

事实上,我没有在Id中设置$filter,而是将其设置为$orderby

当我试图从Id中排除$orderby时,它有效。这是工作查询:

var getResource = string.Format("/me/calendar/events/?$filter=lastModifiedDateTime ge {0}&$orderBy=lastModifiedDateTime", XmlConvert.ToString(updatedMin, XmlDateTimeSerializationMode.Utc));

任何人都知道如何根据Id订购列表?

c# microsoft-graph outlook-restapi
1个回答
0
投票

你不能通过id订购,也没有任何意义这样做。 id是几个属性(主题,路径等)的散列组合。因此,它们的价值既不可订购也不可读。

例如,这是一个实际的id值:

AAMkAGVmMDEzMTM4LTZmYWUtNDdkNC1hMDZiLTU1OGY5OTZhYmY4OABGAAAAAAAiQ8W967B7TKBjgx9rVEURBwAiIsqMbYjsT5e-T7KzowPTAAAAAAENAAAiIsqMbYjsT5e-T7KzowPTAACNM9xPAAA=

此外,我强烈建议使用Microsoft Graph .NET Client而不是自己动手。它将有助于减少学习曲线并为您提供更易读的代码:

await graphClient.Me
   .Calendar
   .Events
   .Request()
   .Filter("lastModifiedDateTime ge {dateTime}")
   .OrderBy("lastModifiedDateTime") 
   .GetAsync();
© www.soinside.com 2019 - 2024. All rights reserved.