.NET FluentValidation:针对相同类型的集合进行验证:重叠日期

.NET FluentValidation: Validate against a collection of the same type: overlapping dates

是否可以使用 FluentValidation 库对集合进行验证。例如,检查新对象的 start/end 日期是否与同一类型集合中的日期重叠?如果没有,有人对执行此类验证有任何建议吗?

如果您想验证一组项目,它们不应相互重叠 — 您可以使用我描述的方法 。当日期间隔相互重叠时,只需将 IEqualityComparer 实现更改为 return true

更新

如果您的集合与视图模型无关并放置在数据库中,例如,您可以使用简单的谓词 return 业务逻辑的结果(示例中使用的已知接口的构造函数注入):

public class ViewModelValidator
{
    public ViewModelValidator(IIntervalService intervalService)
    {
        RuleFor(model => model.NewInterval)
            .Must(interval => !intervalService.IsOverlapExistingIntervals(interval.StartDate, interval.EndDate));
    }
}