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.");
}
}