LINQ が予想とは異なる結果をもたらす理由を理解するのに苦労しています。以下のコードでは、最初の return ステートメントは常に false を返します。実行を一時停止してロール変数を調べると、いずれかのロールの RoleID が 1、つまり RolesEnum.SystemAdmin の値であることがわかります。それにもかかわらず、カウントは 0 です。Any() も使用してみましたが、同じ (正しくない) 結果が生成されます。
最初の return ステートメントをコメントアウトすると、2 番目の 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;