private PersonsPairWithAgeDifference FindPairByCriteria( IEnumerable <PersonsPairWithAgeDifference> pairs, PairingCriteria criteria) { var sortedPairs = pairs.OrderBy(pp => pp.AgeDifference).ToList(); var targetPair = criteria == PairingCriteria.ClosestByAge ? GetPairClosestByAge(sortedPairs) : GetPairFurthestByAge(sortedPairs); return(targetPair); }
public PersonsPairWithAgeDifference FindBy(PairingCriteria pairingCriteria) { var personPairs = GetPersonPairsWithAgeDifference(); var targetPair = new PersonsPairWithAgeDifference(); if (personPairs.Any()) { targetPair = FindPairByCriteria(personPairs, pairingCriteria); } return(targetPair); }
private IPairsFindingStrategy GetFindingStrategy(PairingCriteria pairingCriteria) => pairingCriteria switch {
public IPersonsPair FindBy(PairingCriteria pairingCriteria) { var findingStrategy = GetFindingStrategy(pairingCriteria); return(findingStrategy.Find(_persons)); }