我已经解决了我遇到的一个问题,但是虽然我发现了某些东西是如何工作的(或没有),但我不清楚为什么。
因为我是那种喜欢知道“为什么”的人,所以我希望有人能解释一下:
我有项目列表和相关评论,我想区分管理员评论和用户评论,所以我尝试了以下代码:
User commentUser = userRepository.GetUserById(comment.userId);
Role commentUserRole = context.Roles.Single(x=>x.Name == "admin");
if(commentUser.Roles.Contains(commentUserRole)
{
//do stuff
}
else
{
// do other stuff
}
单步执行代码显示虽然它具有正确的 Role 对象,但它无法识别 commentUser.Roles 中的角色
最终起作用的代码是:
if(commentUser.Roles.Any(x=>x.Name == "admin"))
{
//do stuff
}
我对此很满意,因为它的代码更少,而且在我看来更干净,但我不明白 contains 是如何工作的。
希望有人可以为我解决这个问题。