myUser.aspnet_Roles
- это EntitySet<aspnet_Roles>
(другими словами, коллекция ролей, поэтому маловероятно, что его строковое представление будет соответствовать строковому представлению роли, за которой вы идете.
Есть несколько способов исправить это. Один из них:
// ...
if (myUser.aspnet_Roles.Any(r => r.RoleId.ToString() == "CE44ED48-E9F9-49C6-9E15-E40EEFDC7479"))
// ...
Также обратите внимание, что from y in x select y
- это то же самое, что и x
, поэтому вы можете написать
foreach (aspnet_User myUser in context.aspnet_Users)
// ...
И не надо объявлять userQuery
или roleQuery
. (На самом деле вы, похоже, нигде не используете roleQuery
в любом случае ...)
Кроме того, вы можете посмотреть на использование API членства / ролей для извлечения пользователей в роли:
using System.Web.Security; // at the top of your file
var usersInRole = Roles.GetUsersInRole("name of role here, NOT the guid");
Обратите внимание, что это возвращает массив имен пользователей, а не объектов пользователя, поэтому вам придется проделать небольшую дополнительную работу, чтобы получить идентификатор пользователя, но вы можете подумать об этом ...