c# - 如何使用图形服务客户端根据azure Active Directory中的组ID获取组名称

标签 c# .net azure azure-active-directory

我想根据我提供的对象 ID 获取组名称列表。例如,如果 id 是 5458409c-013f-40d6-8352-522654ae1422,那么我想获取该 id 的组名称,例如可以是“营销”。然而我总是回到错误的组。

这是我迄今为止的实现:

 List<AccessGroup> accessGroups = new List<AccessGroup>();

        try
        {
            foreach(var id in group_ids)
            {
                var page = await graph_client.Groups[id].Members.Request().GetAsync();

                string group_name = "";

                group_name = page.OfType<Group>().Select(x => x.DisplayName).FirstOrDefault();

                while (page.NextPageRequest != null)
                {
                    page = await page.NextPageRequest.GetAsync();
                    group_name = page.OfType<Group>().Select(x => x.DisplayName).FirstOrDefault();
                }

                accessGroups.Add(new AccessGroup { Id = id, Name = group_name });
            }
        }
        catch (Exception ex)
        {
            Logger.Warning(ex.Message);
            Logger.Warning("Error getting group name from azure security groups");
            throw;
        }

最佳答案

看起来您想要存储每个页面的第一个成员显示名称,但是 accessGroups.Add(new AccessGroup { Id = id, Name = group_name }); 仅被调用一次。您应该将其添加到 while block 中。

如果您只想获取第一个组成员的显示名称,那么您可以尝试如下操作:

async Task GetGroupFirstMemberDisplayName()
{

    var members = (await client.Groups.Request().Select(g => g.Id).Expand("members($select=displayName)").GetAsync())
        .Select(g => new { GroupId = g.Id, FirstMemberDisplayName = g.Members.OfType<Group>().FirstOrDefault()?.DisplayName });

    foreach (var item in members)
    {
        Console.WriteLine($"Group {item.GroupId} first member display name: {item?.FirstMemberDisplayName ?? ""}");
    }
}

如果您只想获取所有组的显示名称,那么您可以尝试以下操作:

async Task GetGroupDisplayNames()
{

    var names = (await client.Groups.Request().Select(g => g.DisplayName).GetAsync())
        .Select(g => g.DisplayName);

    Console.WriteLine(string.Join(", ", names));
}

关于c# - 如何使用图形服务客户端根据azure Active Directory中的组ID获取组名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73879406/

相关文章:

c# - 为从 `this` 类型派生的类型提供扩展方法

.net - 按嵌套集合过滤计数排序

azure - 资源类 - 并发 - Azure SQL 数据仓库

azure - Kusto 查询按 user_Id 分组的最早时间戳

c# - 数据库集成测试结构

c# - c# 窗体中的文本框

c# - 如何处理返回结构的不变性?

.net - JumpList 和 ClickOnce - 这种组合可能吗?

c# - System.Net.WebSockets 乒乓/乒乓

azure - 如何使用 C# 读取 Azure Web 作业日志文件