Как проверить, есть ли роль в списке ролей? - PullRequest
0 голосов
/ 04 июня 2019

Мне нужно проверить, есть ли роль в коллекции списков ролей, если нет, выдать результат проверки. Как я могу сравнить это или как я могу решить это по-другому?

public class UserViewModel:IValidatableObject
{
    [Required]
    public string Username { get; set; }
    public IEnumerable<string> Roles { get; set; }

    [Required]
    public string Rola { get; set; }

    public UserViewModel()
    {
        Repozytorium db = new Repozytorium();
        Roles = db.GetAllRoles();
    }
    public UserViewModel(string userName, string rola)
    {
        Repozytorium db = new Repozytorium();
        Roles = db.GetAllRoles();
        Username = userName;
        Rola = rola;
    }
    public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
    {
        if(Roles != Roles )   //this dont work 
            yield return new ValidationResult("role isnt valid", new string[] { "Rola" });
    }
}

1 Ответ

1 голос
/ 04 июня 2019

Вы проверяете, не является ли ваша коллекция ролей вашей коллекцией ролей.Вместо этого убедитесь, что Rola нет в коллекции.С Linq:

if(Roles.All(x => x != Rola ))
    yield return new ValidationResult("Role isn't valid", new [] {nameof(Rola)}; 

Также я рекомендую использовать nameof, как в примере, чтобы при изменении имени свойства сообщение об ошибке оставалось действительным.

...