private static IReadOnlyList <Suggestion> GetIndexesCombinations(IEnumerable <Suggestion> suggestions, IReadOnlyList <Connector> connectors) { var result = new List <Suggestion>(); foreach (var suggestion in suggestions) { for (var indexInSuggestion = 0; indexInSuggestion < suggestion.List.Count; indexInSuggestion++) { var indexInConnectors = suggestion.List[indexInSuggestion]; var lastIndexInConnectors = connectors.Count; if (indexInSuggestion + 1 < suggestion.List.Count) { lastIndexInConnectors = suggestion.List[indexInSuggestion + 1]; } var i = indexInConnectors + 1; while (i < lastIndexInConnectors && connectors[i].MaxCurrentInAmps == connectors[indexInConnectors].MaxCurrentInAmps) { var suggestionCombination = new Suggestion(suggestion.List); suggestionCombination.ReplaceIndexValue(indexInSuggestion, i); result.Add(suggestionCombination); i++; } } } return(result); }