Я решил проблему, которая у меня была, но хотя я узнал, как что-то работает (или не работает), я не понимаю, почему.
Поскольку я из тех людей, которым нравится знать «почему», я надеюсь, что кто-то может объяснить:
У меня есть список элементов и связанных с ними комментариев, и я хотел различать комментарии администратора и комментарии пользователей, поэтому я попробовал следующий код:
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.
Надеясь, что кто-то может прояснить это для меня.