BolfTracker.Web.GamePanelViewModel.GetCurrentActivePlayers C# (CSharp) Method

GetCurrentActivePlayers() private method

private GetCurrentActivePlayers ( IEnumerable gamePlayers, bool includeOvertime ) : IEnumerable
gamePlayers IEnumerable
includeOvertime bool
return IEnumerable
        private IEnumerable<Player> GetCurrentActivePlayers(IEnumerable<Player> gamePlayers, bool includeOvertime)
        {
            if (_currentActivePlayers == null)
            {
                var currentActivePlayers = new List<Player>();

                Func<Shot, bool> query;

                if (includeOvertime)
                {
                    query = s => s.Game.Id == Game.Id;
                }
                else
                {
                    query = s => s.Game.Id == Game.Id && s.Hole.Id < 10;
                }

                // TODO: The part where we check for holes less than 10 will need to change when we implement the new hole logic
                foreach (var shot in Shots.Where(query).OrderByDescending(s => s.Id))
                {
                    if (!currentActivePlayers.Any(p => p.Id == shot.Player.Id))
                    {
                        currentActivePlayers.Add(shot.Player);
                    }
                    else
                    {
                        break;
                    }
                }

                _currentActivePlayers = currentActivePlayers;
            }

            return _currentActivePlayers;
        }