我從活動目錄獲取用戶和組,但經過一些測試後,我們發現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