我是Linq的新手和流畅的验证,我想知道..为什么使用方法1我得到一个错误但是使用方法2它没有任何问题?
RuleFor(x => x)
.Must(ledger => !_companyDbContext.GeneralLedger.Any(x =>
x.Deleted == false
&& !(x.Id == ledger.Id)
&& x.AccountNumber == ledger.AccountNumber
&& x.LedgerAccount == ledger.LedgerAccount
&& x.AccountType == ledger.AccountType
&& x.Description == ledger.Description
)).WithMessage(ValidatorResources.Unique_Message);
RuleFor(x => x)
.Must(testDuplicateRecords)
.WithMessage("duplicated record");
public bool testDuplicateRecords( GeneralLedger ledger)
{
Expression<Func<GeneralLedger, bool>> predicate = (x) => x.Deleted == false && !(x.Id == ledger.Id)
&& x.AccountNumber == ledger.AccountNumber
&& x.LedgerAccount == ledger.LedgerAccount
&& x.AccountType == ledger.AccountType
&& x.Description == ledger.Description;
return !_companyDbContext.GeneralLedger.Any(predicate.Compile());
}