У меня есть класс модели:Как проверить аккуратный способ, если коллекция содержит объект, одно свойство которого равно объекту, переданному в метод Содержит?
public class AuthorizationToView {
public int Id { get; set; }
public virtual Person CustomerToVisit { get; set; }
public virtual ApplicationUser User { get; set; }
public DateTime TimeStamp { get; set; }
}
ApplicationDbContext db
обладает свойством: public DbSet<AuthorizationToView> AuthorizationsToView { get; set; }
И ApplicationUser
имеет свойство public virtual ICollection<AuthorizationToView> PersonsPermittedToView { get; set; }
ВОПРОС: Теперь в одном месте в коде, я стараюсь чтобы проверить, есть ли у user
внутри гиста public virtual ICollection<AuthorizationToView> PersonsPermittedToView { get; set; }
a AuthorizationToView
, у которого есть определенные Person
as свойство, а если не вернуть BadRequest.
Я стараюсь это:
if (User.IsInRole("RegularUser")) {
var user = UserManager.FindById(User.Identity.GetUserId());
if (!user.PersonsPermittedToView.Contains(new AuthorizationToView { CustomerToVisit = person })) {
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
}
, но, к сожалению, !user.PersonsPermittedToView.Contains(new AuthorizationToView { CustomerToVisit = person })
всегда верно.
Я мог бы переопределить метод Equals
, но я боюсь, что он смутит Entity Framework.
Я думаю, вам лучше использовать '.Any()' вместо '.Contains()' – DavidG
@DavidG Не могли бы вы показать, как? Я думал, что я могу использовать LINQ, но не знаю, как в этом случае. – Yoda