C# 无法将方法组转换为func<;long,bool>;

C# 无法将方法组转换为func<;long,bool>;,c#,fluentvalidation,C#,Fluentvalidation,我正在尝试使用fluentvalidation验证pin,以确保哪些用户类型与现有pin匹配。AppDbContext是从dbcontext(实体框架)继承的上下文类。调用isOldPin方法时出现此语法错误。如果PinCodeOld数据类型为string,则不会出现此错误。但如果PinCodeOld数据类型很长,则会出现此错误 public class ChangePinValidator : AbstractValidator<VMPinChange> { privat

我正在尝试使用fluentvalidation验证pin,以确保哪些用户类型与现有pin匹配。AppDbContext是从dbcontext(实体框架)继承的上下文类。调用isOldPin方法时出现此语法错误。如果PinCodeOld数据类型为string,则不会出现此错误。但如果PinCodeOld数据类型很长,则会出现此错误

 public class ChangePinValidator : AbstractValidator<VMPinChange>
{
    private readonly AppDbContext db = new AppDbContext();
    public ChangePinValidator()
    {
        RuleFor(b => b.PinCodeOld).Must(isOldPin).WithMessage("Invalid current pin code.");
        RuleFor(b => b.PinCodeNew).Equal(b => b.PinCodeConfirmation)
            .WithMessage("New pin code is not same with confirmed new pin code.");
    }

    private bool isOldPin(string _currentPin)
    {
        bool isMatch = db.BankAccounts.Any(b => b.PinCode.Equals(_currentPin));

        return isMatch;
    }
}
公共类ChangePinValidator:AbstractValidator
{
private readonly AppDbContext db=new AppDbContext();
公共ChangePinValidator()
{
RuleFor(b=>b.PinCodeOld).Must(isOldPin).WithMessage(“当前pin码无效”);
规则(b=>b.PinCodeNew).Equal(b=>b.PinCodeConfirmation)
.WithMessage(“新pin码与已确认的新pin码不同”);
}
专用布尔isOldPin(字符串_currentPin)
{
bool isMatch=db.BankAccounts.Any(b=>b.PinCode.Equals(_currentPin));
返回isMatch;
}
}
问题在于:

RuleFor(b => b.PinCodeOld).Must(isOldPin)

如果
PinCodeOld
是一个long,那么
Must
方法将期望一个将
long
值作为输入的方法,但您的方法将使用
字符串。如果您需要
long
,则还需要将
isOldPin
更改为
long

谢谢。现在可以了。我只是想知道如何在isOldPin方法中传递额外的参数,因为查询还需要按BankAccountId进行过滤?你的意思是像
Must(p=>isOldPin(p,BankAccountId)
?是的,就是这样。非常感谢。