我很难理解为什么 LINQ 给我的结果与预期的不同。在我下面的代码中,第一个 return 语句总是返回 false。如果我暂停执行并检查角色变量,我可以看到其中一个角色的 RoleID 为 1,即 RolesEnum.SystemAdmin 的值。尽管如此,计数为 0。我也尝试过使用 Any() 并产生相同(不正确)的结果。
注释掉第一个 return 语句,第二个 return 语句可以正常工作。
任何关于行为差异原因的见解或解释都值得赞赏。
谢谢。
var roles = GetRoleRepository(database).GetRolesForUser(userEmail);
// Why is this always false?
return (roles.Where(userRoles => userRoles.RoleID == (int)Roles.RolesEnum.SystemAdmin).Count() > 0);
bool isUserInSystemAdminRole = false;
foreach (Role role in roles)
if (role.RoleID == (int)Roles.RolesEnum.SystemAdmin)
isUserInSystemAdminRole = true;
// this returns the correct result
return isUserInSystemAdminRole;