按displayName筛选组成员无效



我需要提供一个端点,允许用户在组中搜索成员

当没有传入任何筛选器(它返回组的成员(时,下面的代码运行良好,但当传入queryString时,我会得到这个错误

Microsoft.Graph.ServiceException:'代码:Request_UnsupportedQuery消息:当前不支持为引用属性查询指定的筛选器。

有什么合理的方法吗?

MS声称此属性是可过滤的,但这是否仅通过url API?这是否意味着我想做的事情是不可能的?

在他们的例子中,他们似乎总是设置ConsistencyLevel: Eventual,但我不知道如何使用GraphServiceClient来设置

我试着把它添加为标题:

var consistencyLevelHeader = new HeaderOption("consistencylevel", "eventual");
request.Headers.Add(consistencyLevelHeader);

但我得到了相同的结果

var groupId = "guid-of-the-group";
var request = _graphServiceClient.Value.Groups[groupId]
.Members
.Request();
if (!string.IsNullOrEmpty(queryString))
{
request = request.Filter($"startswith(displayName,'{queryString}')");
}
var groupMembersCollection = await request
.GetAsync();
var userDtos = groupMembersCollection.Select(member =>
new AzureADAccountDTO
{
ProviderKey = member.Id,
EmailAddress = ((User)member).Mail,
Name = ((User)member).DisplayName,
})
.ToList();
return userDtos;

您需要添加$count查询参数和ConsistencyLevel头才能获得成功的响应。

请求将类似于低于

https://graph.microsoft.com/v1.0/groups/0023c709-3556-4296-a6ab-6df2a0a1113c/members?$count=true&$filter=startswith(displayName, 's')

您可以在graph Explore中测试这些图调用。

最新更新