private static bool UserIsMemberOfGroup(GraphConnection graphConnection, string userUPN, string groupDisplayName) { // Get the group for which we want to check membership FilterGenerator filter = new FilterGenerator(); Expression filterExpression = ExpressionHelper.CreateEqualsExpression(typeof(Group), GraphProperty.DisplayName, groupDisplayName); filter.QueryFilter = filterExpression; PagedResults <Group> groupToCheckResults = graphConnection.List <Group>(null, filter); if (groupToCheckResults.Results.Count == 1) { // Add group to our groups to check list Group groupToCheck = groupToCheckResults.Results[0] as Group; IList <String> groupsList = new List <string>(); groupsList.Add(groupToCheck.ObjectId); // Get the user for which we want to check the group membership FilterGenerator userFilter = new FilterGenerator(); Expression userFilterExpression = ExpressionHelper.CreateEqualsExpression(typeof(User), GraphProperty.UserPrincipalName, userUPN); userFilter.QueryFilter = userFilterExpression; User retrievedUser = new User(); PagedResults <User> pagedUserResults = graphConnection.List <User>(null, userFilter); if (pagedUserResults.Results.Count == 1) { retrievedUser = pagedUserResults.Results[0] as User; // Check if the user belongs to any of the passed groups IList <String> memberships = graphConnection.CheckMemberGroups(retrievedUser, groupsList); // If the passed group is returned back then the user is a member if (memberships.Contains(groupToCheck.ObjectId)) { return(true); } else { return(false); } } else { throw new ArgumentException(String.Format("Group {0} does not exist", groupDisplayName)); } } else { throw new ArgumentException(String.Format("User {0} does not exist", userUPN)); } }