使用Microsoft Graph C# SDK获取一周日历事件时Filter语法报错求助
解决Microsoft Graph C# SDK获取日历事件的Invalid filter clause错误
你的代码里的filter字符串是导致BadRequest的核心原因,存在三个明显问题:
- 错误使用HTML转义字符
& lt替代逻辑运算符and - 过滤结束时间时遗漏了属性名
end,直接写lt违反OData语法 start和end属于DateTimeTimeZone复合类型,必须通过dateTime子属性进行比较
修正后的完整代码:
var startDate = "2023-01-09T00:00:00Z"; var endDate = "2023-01-16T23:59:59Z"; // 符合OData规范的filter表达式 var filterString = $"start/dateTime ge '{startDate}' and end/dateTime le '{endDate}'"; var events = await graphServiceClient.Me.Calendar.Events .Request() .Filter(filterString) .GetAsync(); ResultText.Text = string.Empty; foreach (var ev in events) { ResultText.Text += $"{ev.Subject}{Environment.NewLine}"; }
额外说明:
- 日期值必须用单引号包裹,这是OData $filter的强制要求
- 建议使用UTC时间格式(带
Z后缀),避免不同时区导致的事件范围偏差
内容的提问来源于stack exchange,提问作者Corey Gashlin
相关产品推荐
相关产品推荐

