نیازی نیست به این حلقه
شما از Navigation Property ها میتونید بهره ببرید با eager loading
شما باید برای اینگونه موارد دو موجودیت داشته باشید
جدول User
جدول Perission
و یک جدول واسط برای روابط چند به چند
کوئری زیر البته با C# هست نمونهم ثال شما هست
public ObservableCollection<Role> RolesOfUsers(User user)
{
List<Role> list = new List<Role>();
foreach (var role in _roles.Include(x => x.Users).Where(x => x.Id == user.Id))
list.Add(role);
return new ObservableCollection<Role>(list);
}