private IEnumerable<ExpandoObject> GetOuGroupsUsersData(
PrincipalContext pc)
{
var data = new List<ExpandoObject>();
try {
var gp = new GroupPrincipal(pc);
var ps = new PrincipalSearcher(gp);
var psr = ps.FindAll();
foreach (var g in psr.GetGroupPrincipals())
{
try {
var gpsr = g.GetMembers();
data.AddRange(
gpsr.GetUserPrincipals().Select(
u => GenerateData(g, u))
.Cast<ExpandoObject>());
}
finally{
gpsr.Dispose();
}
}