Если вам нужно удалить всю роль, вы можете сделать:
SPUser user = ...;
list.RoleAssignments.Remove(user);
Если вам нужно отменить некоторую привязку определения, вы можете сделать:
SPUser user = ...;
list.RoleAssignments.GetAssignmentByPrincipal(user).RoleDefinitionBindings.Remove(..);
Если вы этого не хотите, пожалуйста, опишите более подробно.
UPDATE:
Вот пример кода, который я протестировал, и он работает. Это удалит роль Contribute и добавит роль Read в целевую группу. Обратите внимание, что у меня не англоязычная версия Sharepoint, поэтому убедитесь, что названия ролей.
static void Main(string[] args)
{
using (SPSite site = new SPSite("site_url"))
{
using (SPWeb web = site.OpenWeb())
{
SPList list = web.GetList(web.Url + "/" + "list_url");
SPGroup group = web.SiteGroups["target_group_name"];
SPRoleDefinition contributeDef = web.RoleDefinitions["Contribute"];
SPRoleDefinition readDef = web.RoleDefinitions["Read"];
SPRoleAssignment contributeRole = new SPRoleAssignment(group);
contributeRole.RoleDefinitionBindings.Add(contributeDef);
if (!list.HasUniqueRoleAssignments) // required to make role change
list.BreakRoleInheritance(true);
var assignmentForGroup = list.RoleAssignments.GetAssignmentByPrincipal(group);
assignmentForGroup.RoleDefinitionBindings.Remove(contributeDef);
assignmentForGroup.RoleDefinitionBindings.Add(readDef);
assignmentForGroup.Update();
}
}
}