コード例 #1
0
        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);
        }
コード例 #2
0
        public PersonsPairWithAgeDifference FindBy(PairingCriteria pairingCriteria)
        {
            var personPairs = GetPersonPairsWithAgeDifference();

            var targetPair = new PersonsPairWithAgeDifference();

            if (personPairs.Any())
            {
                targetPair = FindPairByCriteria(personPairs, pairingCriteria);
            }

            return(targetPair);
        }
コード例 #3
0
 private IPairsFindingStrategy GetFindingStrategy(PairingCriteria pairingCriteria) =>
 pairingCriteria switch
 {
コード例 #4
0
        public IPersonsPair FindBy(PairingCriteria pairingCriteria)
        {
            var findingStrategy = GetFindingStrategy(pairingCriteria);

            return(findingStrategy.Find(_persons));
        }