我解决了一个问题,但尽管我已经知道了某个东西的工作原理(或不工作),但我对其原因并不清楚。
由于我是那种喜欢知道“为什么”的人,所以希望有人能解释一下:
我有一些项目和相关评论的列表,我想区分管理员评论和用户评论,所以我尝试了以下代码:
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
}
逐步执行代码后发现,虽然它有正确的角色对象,但在commentUser.Roles中无法识别该角色
最终有效的代码如下:
if(commentUser.Roles.Any(x=>x.Name == "admin"))
{
//do stuff
}
我很满意这个方法,因为代码量少且更加简洁易懂,但是我不明白为什么"contains"没有起作用。希望有人能帮我解决这个问题。
==
,所以重载operator ==
并不重要,但你关于重写Equals
和GetHashCode
是正确的。 - Jeppe Stig Nielsen