public List <Phase> PossiblePhases(BossLocationType bossLocation) { PossibleRotations = PossibleRotations.Where(r => r.Phases[_phaseIndex].BossLocation == bossLocation).ToList(); //Get only distinct phases (otherwise you'd get two melee phases with same positioning for first round). var result = PossibleRotations.Select(p => p.Phases[_phaseIndex + 1]) .GroupBy(p => new { p.BossLocation, p.Style }) .Select(p => p.First()).ToList(); _phaseIndex++; PhaseSameAttackStyle = result.Count != result.GroupBy(s => s.Style).Count(); return(result); }