簡體   English   中英

Microsoft.Graph 獲取組的所有用戶

[英]Microsoft.Graph get all users of a group

我正在使用 Microsoft.Graph,我想返回特定組中所有用戶的列表。 我找不到任何關於此的可消化信息。

我試過使用.Request().Expand(x => x.Members)但這只會返回 20 個用戶。 而且他們沒有分頁(見這里)。

我可以很好地提取組列表,但是如何根據用戶所在的組過濾用戶? 這就是我到目前為止所得到的......

public async Task Do()
{
    var graphClient = new GraphServiceClient(_authProvider);
    var groups = await graphClient.Groups.Request().GetAsync();

    do
    {
        foreach (var group in groups)
        {
            Console.WriteLine($"{group.Id}, {group.DisplayName}");
            Console.WriteLine("------");

            var filter = $""; // What goes here?
            var users = await graphClient.Users.Request().Filter(filter).GetAsync();

            do
            {
                foreach (var user in users)
                {
                    Console.WriteLine($"{user.Id}, {user.GivenName} {user.Surname}, {user.MemberOf}");
                }
            }
            while (users.NextPageRequest != null && (users = await users.NextPageRequest.GetAsync()).Count > 0);

            Console.WriteLine();
        }
    }
    while (groups.NextPageRequest != null && (groups = await groups.NextPageRequest.GetAsync()).Count > 0);
}

像這樣的東西

public async Task Do()
{
    var graphClient = new GraphServiceClient(_authProvider);

    var groups = await graphClient.Groups.Request().GetAsync();

    do
    {
        foreach (var group in groups)
        {
            Console.WriteLine($"{group.Id}, {group.DisplayName}");
            Console.WriteLine("------");

            var users = await graphClient.Groups[group.Id].Members.Request().GetAsync();

            do
            {
                foreach (var user in users)
                {
                    Console.WriteLine($"{user.Id}");
                }
            }
            while (users.NextPageRequest != null && (users = await users.NextPageRequest.GetAsync()).Count > 0);

            Console.WriteLine("------");
            Console.WriteLine();
        }
    }
    while (groups.NextPageRequest != null && (groups = await groups.NextPageRequest.GetAsync()).Count > 0);
}

我是這樣做的:


    var queryOptions = new List<QueryOption>();
    queryOptions.Add(new QueryOption("$count", "true"));

    var groupMembers = await graphClient
        .Groups[groupId]
        .Members
        .Request(queryOptions)
        .Header("ConsistencyLevel", "eventual")
        .GetAsync();

    var users = new List<User>();
    users.AddRange(groupMembers.CurrentPage.OfType<User>());

    while (groupMembers.NextPageRequest != null)
    {
        groupMembers = await groupMembers.NextPageRequest.GetAsync();
        users.AddRange(groupMembers.CurrentPage.OfType<User>());
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM