GraphServiceClient 过滤器问题

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

我按照此页面设置了 MicrosoftGraphProvider:http://www.keithmsmith.com/get-started-microsoft-graph-api-calls-net-core-3/

这工作正常,因为我可以通过以下请求获取所有用户的列表。

var user = await _graphServiceClient.Users.Request().GetAsync();

但是,我并不总是希望返回所有用户,因此我通过电子邮件对用户进行了过滤。

示例说要这样做

var user = await _graphServiceClient.Users[email].Request().GetAsync();

但这总是导致找不到用户,即使我从所有用户的响应中传递了有效的电子邮件。

所以我尝试构建一个过滤器,并这样做。

var test = await _graphServiceClient.Users["$filter=startswith(mail,'[email protected]')"].Request().GetAsync();

var test = await _graphServiceClient.Users["$filter=(startswith(mail,'[email protected]'))"].Request().GetAsync();

这两个都返回了错误:

Status Code: BadRequest
Microsoft.Graph.ServiceException: Code: BadRequest
Message: The $filter path segment must be in the form $filter(expression), where the expression resolves to a boolean.

当我在 Postman 中直接调用 url 时使用此过滤器,效果很好。但我正在尝试使用他们的 sdk,但它没有按预期工作。

这个过滤查询有什么问题?

c# asp.net microsoft-graph-api microsoft-graph-sdks
2个回答
2
投票

$filter
应在
Filter
方法中指定。您关注的文章并不反映当前的 API。

var users = await _graphServiceClient.Users
.Request()
.Filter("startswith(mail,'[email protected]')")
.GetAsync();

对于 SDK v5:

var result = await _graphServiceClient.Users.GetAsync((rc) =>
{
    rc.QueryParameters.Filter = "startswith(mail,'[email protected]')";
});

检查文档


0
投票

对于使用较新 GraphServiceClient (5.x.x) 版本的人,Request() 不再可用,因此您可以在 RequestConfiguration 中传递过滤器字符串

例如:

var groups = await _graphServiceClient.Groups.GetAsync((requestConfiguration) =>
{
    requestConfiguration.QueryParameters.Filter = "startswith(mail,'[email protected]')";
});
© www.soinside.com 2019 - 2024. All rights reserved.