Часть вашего результата состоит в том, что некоторые группы, к которым принадлежит пользователь, являются членами других групп. Полный список групп пользователей будет включать все группы, к которым принадлежит пользователь, как напрямую, так и через членство в других группах, которые также являются членами.
В список также будут включены встроенные группы, которые по умолчанию обычно скрыты от собственных инструментов администратора.
Лучше всего, чтобы приложение хранили основной список групп, которые вы хотите видеть в вашем приложении, или список групп, которые ваше приложение должно игнорировать (либо список включения, либо список исключения). Затем, когда вы откроете роли конкретного пользователя, просто сравните его с настроенным списком исключений или включений и отфильтруйте нежелательные результаты.
Если вы хотите более простой способ, есть поставщик с открытым исходным кодом AD роли в codeproject , который уже поддерживает списки исключений и включения. У этого также есть другие хорошие функции как дополнительное кэширование, которое ДЕЙСТВИТЕЛЬНО ускорит Ваше приложение. Встроенный поставщик ролей AD работает очень плохо.