Fluent validation to check list of objects Id's are not null or empty in C#

3.8k Views Asked by At

i have written one rule to check whether objects Id within list are not null or empty. But rule is not failing. Is any problem in here with my code ?

NOTE : Id's are of string type.

RuleFor(x => x.MyListOfObjects).Must(x => x.All(x => !string.IsNullOrWhiteSpace(x.Id)))
                        .WithMessage("The Id should not be empty or null.");

Any pointers or suggestions are welcomed.

1

There are 1 best solutions below

0
On BEST ANSWER

I've written the possible example for your code. Looks like everything is ok for your statement if you use fluent validation in the such way (please notice that if one item is "" or null check is still applied):

internal static class Program
        {
            static void Main(string[] args)
            {
                var list = new ListClass();
                var result = list.Validate();
    
                if(!result.IsValid) Console.WriteLine($"Error: {result.Errors.First()}");
            }
    
        }
    
        class ListClass
        {
            public List<Item> List = new List<Item>()
            {
                new Item {Id = "Empty"},
                new Item {Id = null},
                new Item {Id = ""},
            };
    
            private readonly Validator _validator = new Validator();
    
            public ValidationResult Validate() => _validator.Validate(this);
        }
    
        class Item
        {
            public string Id { get; set; }
        }
    
        class Validator : AbstractValidator<ListClass>
        {
            public Validator()
            {
                RuleFor(x => x.List).Must(x => x.All(x => !string.IsNullOrWhiteSpace(x.Id)))
                    .WithMessage("The Id should not be empty or null.");
            }
        }