Odata 过滤器 DateTime 将字符串转换为 DateTime 并过滤

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

我正在尝试检索特定日期之后的所有记录(网络研讨会),如下所示:

var result = await graphClient.Solutions.VirtualEvents.Webinars
.GetByUserIdAndRoleWithUserIdWithRole("organizer", "16b1190f-0552-4c95-90f5-c4d2d852812b").GetAsync((requestConfiguration) =>
{
    requestConfiguration.QueryParameters.Count = true;
    // requestConfiguration.QueryParameters.Filter =
    //     "date(startDateTime/dateTime) ge 2024-03-26T12:00:00Z";
    requestConfiguration.QueryParameters.Filter =
        "cast(startDateTime/dateTime, Edm.DateTimeOffset) ge 2024-03-26T12:00:00Z";
});

网络研讨会模型 StartDateTime.DateTime 的类型是一个字符串:

我尝试了不同的方法,但要么收到“Edm.String”和“Edm.DataTimeOffset”错误,要么过滤器不起作用

.net odata microsoft-teams microsoft-graph-teams
1个回答
0
投票

我从未尝试过过滤网络研讨会,但对于某些属性类型为

DateTimeTimeZone
的其他端点,我需要将日期时间用单引号引起来。

$filter=start/dateTime ge '2024-02-03T12:00:00'

如果需要包含时区偏移,请将

+
编码为
%2B

$filter=start/dateTime ge '2024-02-03T12:00:00%2B2' // +2
$filter=start/dateTime ge '2024-02-03T12:00:00-2' // -2

我不确定Graph SDK是否会在过滤查询中自动编码

+

var result = await graphClient.Solutions.VirtualEvents.Webinars
.GetByUserIdAndRoleWithUserIdWithRole("organizer", "16b1190f-0552-4c95-90f5-c4d2d852812b").GetAsync((rc) =>
{
    rc.QueryParameters.Count = true;
    rc.QueryParameters.Filter = "startDateTime/dateTime ge '2024-03-26T12:00:00Z'";
});
© www.soinside.com 2019 - 2024. All rights reserved.