Вы делаете это неправильно.Вместо списка вы должны хранить в одной переменной PermissionEnum и для каждого добавляемого разрешения делать побитовое или:
PermissionEnum pe = PermissionEnum.None; //Current value:0
pe |= PermissionEnum.Read; //Add Read permission. Current value: 1
pe |= PermissionEnum.Delete;//Add Delete permission. Current value: 5
Затем вы можете отобразить значение, преобразующее int в строку:
string result = Convert.ToString((int)pe, 2); //yields "101"
Чтобы удалить разрешение, используйте битовую and
и битовую not
pe &= ~PermissionEnum.Read; //Removes Read permission. Current value: 4
Также, чтобы проверить, установлено ли какое-либо разрешение, используйте битовую and
и проверьте, является либольше 0:
bool canRead = (pe & PermissionEnum.Read) > 0;