Что ж, прямой подход с помощью запросов к базе данных будет работать.
Тем не менее, вы полностью обходите членство и все функции, которые он предлагает.
Почему бы просто не использовать членство:
var roles = from MembershipUser u in Membership.GetAllUsers()
select new {user = u,
roles = Roles.GetRolesForUser(u.UserName)};
Таким образом, если в будущем структура базы данных изменится, ваш код все равно будет работать, поскольку вам не нужно знать реализацию.
Что ты думаешь?
ps: я не проверял, какой тип SQl генерируется, поэтому, если вам нужна супер производительность, все же может быть лучше перейти прямо к DB