如何用C# SDK执行等价Microsoft Graph查询仅获取群组DisplayName
问题
给定群组ID,希望仅获取该群组的DisplayName。在Microsoft Graph Explorer中可以实现,但用C#的Graph SDK调用graphServiceClient.Groups.GetByIds(POST请求)时,不知道怎么指定$select参数,PostAsync方法看起来没有设置查询参数的入口。
尝试的代码如下:
var groups = await graphServiceClient.Groups.GetByIds .PostAsync(new() { Ids = ids, Types = new() { "group" } }, null, cancellationToken) .ConfigureAwait(false); return groups?.Value?.Select(d => ((Microsoft.Graph.Models.Group)d).DisplayName);
这段代码能获取群组的全部属性,但只想拿到DisplayName,请问是否可行?毕竟Graph Explorer里能成功执行。
解决方案
完全可以实现,你需要通过GetByIdsRequestConfiguration来设置$select查询参数,具体修改代码如下:
var requestConfig = new GroupsGetByIdsRequestConfiguration { QueryParameters = new GroupsGetByIdsQueryParameters { Select = new[] { "displayName" } } }; var groups = await graphServiceClient.Groups.GetByIds .PostAsync(new() { Ids = ids, Types = new() { "group" } }, requestConfig, cancellationToken) .ConfigureAwait(false); return groups?.Value?.Select(d => ((Microsoft.Graph.Models.Group)d).DisplayName);
核心是创建一个请求配置对象,在QueryParameters的Select数组里指定要返回的属性displayName,然后把这个配置对象传给PostAsync的第二个参数。这样Graph API就只会返回你需要的DisplayName属性,不用拉取全部字段。
内容的提问来源于stack exchange,提问作者Shripathi Kamath
相关产品推荐
相关产品推荐

