我需要提供一个端点,允许用户在组中搜索成员
当没有传入任何筛选器(它返回组的成员(时,下面的代码运行良好,但当传入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中测试这些图调用。