I am trying to achieve an LDAP query to gather all properties we have about our users without specifying the properties before hand, I would like to display this in a table so u
This can be done using DirectoryEntry
, but I don't think the SearchResultCollection
has all fields.
Try to create a DirectoryEntry
for every search result, it should have all active directory properties:
DirectoryEntry entry = result.GetDirectoryEntry();
Also, note that in the active directory every property can have multiple values (like the MemberOf field), so you'll have to iterate them as well.
I've wrote a similar method, but I chose a List
with keys/values (it seemed more manageable over WCF. ILookup
would be optimal, but I couldn't get it to work here). Here it is, stripped from try/catch/using
var list = new List>();
foreach (PropertyValueCollection property in entry.Properties)
foreach (object o in property)
{
string value = o.ToString();
list.Add(new KeyValuePair(property.PropertyName, value));
}