FluentValidation:如何简化这段代码?

FluentValidation: how to simplify this code?

我正在使用 FluentValidation 库来创建这样的验证器:

谁能帮我简化这部分代码?

private bool UniqueSimNo(string simNo)
    {
        MyContext _db = new MyContext();
        Sim s = _db.Sims.Where(x => x.SimNo.ToLower() == simNo.ToLower()).SingleOrDefault();
        var sim = _db.Sims.Where(x => x.SimNo.ToLower() == s.SimNo.ToLower()).Where(x => x.Id != s.Id).FirstOrDefault();
        if (sim == null) return true;
        return false;
    }

嗯,如果您不将 id 作为参数传递给您的方法,您的代码就没有意义。

我猜您想对新项目 (id = 0) 和现有项目 (id !=0) 使用相同的验证器。

这一行在你的 SingleOrDefault 测试后没有按照你认为的那样做,因为如果有多个项目具有相同的 SimNo , SingleOrDefault 会引发异常: var sim = _db.Sims.Where(x => x.SimNo.ToLower() == s.SimNo.ToLower()).Where(x => x.Id != s.Id).FirstOrDefault();

所以我会做

private bool UniqueSimNo(string simNo, int id = 0) {
    var _db = new MYContext());
    return !_db.Sims.Any(x => x.Id != id && x.simNo.ToLower() == simNo.ToLower()); 

}