public List <Card[]> ValidSelections(Card cardToPlay, List <Card> table) { var subsets = _sequenceService.GenerateSubsets(table); var validSelections = new List <Card[]>(); foreach (var candidate in subsets) { var sum = candidate.Aggregate(0, (acc, next) => acc + next.Value); if (sum == cardToPlay.Value) { validSelections.Add(candidate.ToArray()); } } return(validSelections); }