i'm trying to refactor some code that is going to be similar in several areas. This piece of code is from a validator using fluentvalidation. I'm trying to transform the HaveUniqueNumber routine to be generic and pass in lambdas that will be used in the db query.
public class AddRequestValidator : AbstractValidator<AddRequest>
{
    public AddRequestValidator()
    {
        RuleFor(x => x)
            .Must(x => HaveUniqueNumber(x.myNumber, x.parentId))
            .WithMessage("myNumber '{0}' already exists for parentId '{1}'.", x => x.myNumber, x=>x.parentId);
    }
    private bool HaveUniqueNumber(string number, int parentId)
    {
        myModel existingNumber = null;
        using (var context = new myContextDb())
        {
            existingNumber = context.myModel.SingleOrDefault(a => a.MyNumber == number && a.ParentId == parentId);
        }
        return existingNumber == null;
    }
}
i tried implementing something like :
public class AddRequestValidator : AbstractValidator<AddRequest>
{
    public AddRequestValidator()
    {
        RuleFor(x => x)
            .Must(x => HaveUniqueNumber<myModel>(an => an.myNumber == x.MyNumber, an => an.parentId == x.parentId))
            .WithMessage("myNumber '{0}' already exists for parentId '{1}'.", x => x.myNumber, x=>x.parentId);
    }
    private bool HaveUniqueNumber<T>(Expression<Func<T, bool>> numberExpression, Expression<Func<T, bool>> parentExpression)
    {
        T existingNumber = default(T);
        using (var context = new myContextDb())
        {
            existingNumber = context.T.SingleOrDefault(numberExpression && parentExpression);
        }
        return existingNumber == null;
    }
}
how can i get an something similar to the original to work.
 
    