【发布时间】:2020-08-27 05:17:31
【问题描述】:
我正在尝试使用 Microsoft Graph API 查询 Microsoft Azure Active Directory 中组的成员。在我尝试过滤结果之前,我的查询一直有效。由于过滤器子句无效,服务抛出异常Microsoft.Graph.ServiceException。我了解并非所有 Microsoft Graph API 端点都支持某些筛选子句。我想按名称过滤Members,最好使用in 子句。这可能吗?我尝试使用 startswith 和 in 过滤子句,但都抛出相同的异常。
GraphServiceClient client = GetGraphServiceClient(token);
const string graphProperties = "id,givenName,surname,userPrincipalName,jobTitle,department,officeLocation,businessPhones,mobilePhone,mail";
IGroupMembersCollectionWithReferencesRequest query = client.Groups[Settings.IntranetObjectID].Members.Request().Select(graphProperties);
if (!string.IsNullOrWhiteSpace(model.SearchText))
{
query.Filter($"in(displayName, '{model.SearchText}'");
}
IGroupMembersCollectionWithReferencesPage members = await query.Top(PageSize).GetAsync();
model.StaffMembers = new List<StaffMember>();
while (members.Count > 0)
{
foreach (DirectoryObject member in members)
{
if (member is User user)
{
model.StaffMembers.Add(new StaffMember(user));
}
}
if (members.NextPageRequest == null)
{
break;
}
members = await members.NextPageRequest.GetAsync();
}
【问题讨论】:
-
'in' 子句不受图形过滤器查询参数的支持,因为它在支持startswith 和任何lambda 运算符的document 中指定。请与 requestid 分享整个错误响应。
-
嘿,我的朋友,你少了一个右括号:正确的命令是 query.Filter($"in(displayName, '{model.SearchText}')");也许这导致了无效过滤器错误。