2017-06-01 1 views
0

J'ai une liste de chaînes et je dois définir une règle pour valider mon ModelState dans l'API Web.Fluent Validation sur Liste de chaîne

Chaque élément de chaîne de cette liste doit avoir une longueur = 2 uniquement. Je n'ai pas écrit plus de 2 ou moins de 2.

J'ai écrit quelque chose comme ça, mais ça ne marche pas.

RuleFor(m => m.State.TrueForAll(x => x.Length == 2)).Equals(true); 

Quelqu'un pourrait-il m'aider ici?

+0

Ne devrait-il être plus comme 'RuleFor (m => m.State) .Must (s => s.TrueForAll (x => x .Length == 2)) '; 'RuleFor' est destiné à sélectionner la propriété que vous voulez valider, ensuite vous effectuez la validation après cela. – juharr

+0

Copie possible de [Comment validez-vous avec chaque chaîne dans une liste en utilisant la validation active?] (Https://stackoverflow.com/questions/10190316/how-do-you-validate-against-each-string-in-a -list-using-fluent-validation) –

+0

@juharr Cela a fonctionné! Merci. – S7H

Répondre

0

Avez-vous essayé comme ceci:

bool isAllValid = yourList.All(x => x.Length == 2); 

yourList être la liste d'entrée, après l'exécution de la valeur isAllValid sera vrai si tous les éléments de la liste sont de longueur 2. Si l'un des éléments de la chaîne est inférieur à 2 ou supérieur à 2, la valeur isAllValid sera false. Si vous mettez cela sous une méthode alors sa signature serait:

public bool IsAllItemsValid(List<string> yourList) 
{ 
    return yourList.All(x => x.Length == 2); 
}