C# 使用Graph API加载两个Azure Active Directory组中的用户列表

C# 使用Graph API加载两个Azure Active Directory组中的用户列表,c#,asp.net-mvc,azure,azure-active-directory,C#,Asp.net Mvc,Azure,Azure Active Directory,我对Active Directory和Azure非常陌生,从我的问题中可以明显看出这一点。我把这封信作为参考。我可以做我正在尝试的大部分事情,但我遇到了一个问题: 我在Azure Active Directory中有一个组和用户的层次结构,其中我有两个级别的组(例如,GroupA包含GroupB和GroupC,GroupD包含GroupE…)。理论上,用户可以是这些组的任意组合(例如GroupA、GroupD和GroupE) 我将两个字符串传递给我的MVC项目控制器,其中每个字符串都是Azure

我对Active Directory和Azure非常陌生,从我的问题中可以明显看出这一点。我把这封信作为参考。我可以做我正在尝试的大部分事情,但我遇到了一个问题:

我在Azure Active Directory中有一个组和用户的层次结构,其中我有两个级别的组(例如,GroupA包含GroupB和GroupC,GroupD包含GroupE…)。理论上,用户可以是这些组的任意组合(例如GroupA、GroupD和GroupE)

我将两个字符串传递给我的MVC项目控制器,其中每个字符串都是Azure Active Directory中一个组的ID。我只想加载两个组中重叠的用户对象,即仅加载两个组中的用户

下面是MSDN中的一个示例项目,我可以加载其中一个组中所有用户的列表,如下所示:

Group groupA = DirectoryService.groups.Where(it => (it.objectId == GroupAId)).SingleOrDefault();
DirectoryService.LoadProperty(groupA , "members");
List<User> usersListA = groupA.members.OfType<User>().ToList();
groupA=DirectoryService.groups.Where(it=>(it.objectId==GroupAId)).SingleOrDefault();
DirectoryService.LoadProperty(groupA,“成员”);
List usersListA=groupA.members.OfType().ToList();
复制第二个列表,然后我可以将两个列表相交:

Group groupB = DirectoryService.groups.Where(it => (it.objectId == GroupBId)).SingleOrDefault();
DirectoryService.LoadProperty(groupB , "members");
List<User> usersListB = groupA.members.OfType<User>().ToList();

List<User> finalList = usersListA.Intersect(usersListB);
groupB=DirectoryService.groups.Where(it=>(it.objectId==GroupBId)).SingleOrDefault();
DirectoryService.LoadProperty(groupB,“成员”);
List usersListB=groupA.members.OfType().ToList();
List finalList=usersListA.Intersect(usersListB);
基本上,我正在完全加载这两个列表。。。我的问题是——有没有更好的办法

例如,在我从GroupA加载了用户列表之后,是否有一种方法可以过滤列表,使其仅包括属于GroupB的用户?大致如下:

//<Incorrect syntax>
List<User> finalList =  groupA.Where(user => user.memberOf("GroupB"));
//</Incorrect syntax>
//
List finalList=groupA.Where(user=>user.memberOf(“GroupB”);
//

不,如果您正在寻找的是服务器端,那么目前没有办法执行此操作