public static IEnumerable<Player> RankedAtMost([NotNull] this IEnumerable<Player> source, [NotNull] Rank maxRank) { if (source == null) throw new ArgumentNullException("source"); if (maxRank == null) throw new ArgumentNullException("maxRank"); foreach (Player player in source) { if (player.Info.Rank <= maxRank) { yield return player; } } }