نیازی نیست به این حلقه
شما از 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);
}