Here's what I have so far:
private static bool RoleAssignmentHasPermissions(RoleAssignment roleAssignment)
{
roleAssignment.Context.Load(roleAssignment.RoleDefinitionBindings);
roleAssignment.Context.ExecuteQuery();
foreach (var x in roleAssignment.RoleDefinitionBindings)
{
if (x.BasePermissions != null)
return true;
}
return false;
}
foreach (RoleAssignment x in MyListItem.RoleAssignments)
{
MyListItem.Context.Load(x.Member);
MyListItem.Context.ExecuteQuery();
bool hasPermissions = RoleAssignmentHasPermissions(x);
if (x.Member is Group)
{
// For groups, recursively process the user entries.
foreach (User u in ((Group)x.Member).Users)
{
// get user's email address
}
}
else
{
// For users, directly, process entry.
// get user's email address
}
}