Короче говоря, всякий раз, когда вы удаляете элемент с индексом [i], вы пропускаете элемент с индексом [i + 1]. Например, если ваш массив выглядит так:
{'Джо Блоггс', 'Роб Добб', 'h h', 'gafddf'}; я = 0
удалите Джо Блоггса, который находится в позиции 0.
{Роб Добб ',' h h ',' gafddf '}; = 1
удалить 'h h', который находится в позиции 1
{Роб Добб ',' gafddf '}; я = 2
i не меньше, чем yourArray.Count, поэтому цикл останавливается. Там нет позиции 2.
Самое быстрое решение - добавить i--, если вы удалите что-то из индекса [i]. В вашем случае
staffUsers.Remove(staffUsers[i]);
i--;
Надеюсь, это поможет!