我尝试在this documentation之后从Microsoft Graph获取事件列表。
我想先得到按lastModifiedDateTime
排序的列表,然后是id
列表。
以下是示例查询:
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"
}
}
}
实际上,我没有在$filter
中设置Id
,而是将其设置为$orderby
。
当我试图从$orderby
中排除Id
时,它起作用了。以下是工作查询:
var getResource = string.Format("/me/calendar/events/?$filter=lastModifiedDateTime ge {0}&$orderBy=lastModifiedDateTime", XmlConvert.ToString(updatedMin, XmlDateTimeSerializationMode.Utc));
有人知道如何根据Id
对列表进行排序吗?
发布于 2018-09-18 16:53:34
您不能按id
排序,这样做也没有任何意义。id
是几个属性(主题、路径等)的散列组合。因此,它们的值既不是可排序的,也不是人类可读的。
例如,这是一个实际的id
值:
AAMkAGVmMDEzMTM4LTZmYWUtNDdkNC1hMDZiLTU1OGY5OTZhYmY4OABGAAAAAAAiQ8W967B7TKBjgx9rVEURBwAiIsqMbYjsT5e-T7KzowPTAAAAAAENAAAiIsqMbYjsT5e-T7KzowPTAACNM9xPAAA=
此外,我强烈建议使用Microsoft Graph .NET Client,而不是使用自己的。它将有助于减少学习曲线,并为您提供更具可读性的代码:
await graphClient.Me
.Calendar
.Events
.Request()
.Filter("lastModifiedDateTime ge {dateTime}")
.OrderBy("lastModifiedDateTime")
.GetAsync();
https://stackoverflow.com/questions/52389666
复制