Ef fluent api FluentValidation:如何简化此代码?

Ef fluent api FluentValidation:如何简化此代码?,ef-fluent-api,Ef Fluent Api,我使用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.Si

我使用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()); 

}