我从活动目录获取用户和组,但经过一些测试后,我们发现memberOF
未与member
对齐示例userA是groupW的成员,但groupW未列出userA作为成员。为了解决这个问题,我们必须让会员及会员然后同步他们。查找2的三角洲IEnumerable <T>
public class User
{
public string UserName { get; set; }
public IList<string> MemberOf { get; set; } // list of group names
}
public class Group
{
public string Name { get; set; }
public IList<string> Members { get; set; } // list of username
}
从Active Directory中我得到
IEnumerable<Group> allGroups
IEnumerable<User> allUsers
我怎样才能获得增量?
我应该有2本字典或查找...等
- allGroups 列表User.MemberOF 未发现各组字典应具备的关键,因为用户的组名和值列表。
例如组A的用户{A,B,C},组B的用户{A,C}
- ALLUSERS 列表中的所有的用户不Group.member 词典中找到应具有键作为用户名和组的值列表。
例如用户A组{X,Y},用户B组{X,Z}
编辑:又如:让我们说,这是第2 IEnumerable的从Active Directory返回。
`IEnumerable<Group> allGroups` contains
- GroupA {"Mike","Jan","David"}
- GroupB {"Kim","David","Jolan","Tim"}
// where Groupx is the name of the group and between {""} is the list of member
IEnumerable<User> allUsers contains
- Mike {"GroupA","GroupB","GroupC"}
- David {"GroupA","GroupB"}
- Jolan {"GroupB","GroupC"}
在这个例子中,我们可以看到,当我们要求LDAP获得groupA的所有成员时,“Jolan”未被列出。但是,当我们要求得到所有群体,其中“Jolan”是成员,那么我们可以看到,“A组”中列出。同样的,“迈克”,他是B族中的一员,也C组。 GroupC未列出。 “大卫” 在这种情况下,有正确的价值观。
还要注意的是,“提姆”,在B组上市之后,虽然他不是在
allUsers
结果应该是这样的
Dictionary<string,IList<string>> missingUsers;
Item 1 > key="Mike", Value={"GroupB","GroupC"}
Item 2 > Key="Jolan" , Value= {"GroupC"}
Dictionary<string,IList<string>> missingGroup;
item 1 > Key="GroupB",{"Tim"}
我希望这是更清晰
在您的第一个示例中,您是否尝试在groupA中查找** not **的用户列表? IE浏览器。 A,B和C在组A中不是**,但所有其他用户**在组A中都是**? – Kevin 2013-05-01 22:38:08
好吧,我将编辑帖子,并尝试使其更清楚。 – Maro 2013-05-01 23:35:15
我明白了...我并不期望LDAP会给出不一致的结果,所以这就是我没有想到的原因。易于修复...我会更新我的答案。 – Kevin 2013-05-02 15:41:26