[英]Microsoft.Graph get all users of a group
I'm using Microsoft.Graph and I want to return a list of all users in particular groups.我正在使用 Microsoft.Graph,我想返回特定组中所有用户的列表。 I can not find any digestible information about this.我找不到任何关于此的可消化信息。
I have tried using .Request().Expand(x => x.Members)
but this only returns 20 users.我试过使用.Request().Expand(x => x.Members)
但这只会返回 20 个用户。 And they are not paged (see here ).而且他们没有分页(见这里)。
I can pull a list of groups fine, but how can I filter users based on what group they're in?我可以很好地提取组列表,但是如何根据用户所在的组过滤用户? This is what I've got so far...这就是我到目前为止所得到的......
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);
}
Something like this works像这样的东西
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);
}
This is how I did it:我是这样做的:
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.