Permitindo iteração sem gerar lixo

Tenho o seguinte código em um pool de objetos que implementa a interface IEnumerabl

public IEnumerable<T> ActiveNodes
{
    get
    {
        for (int i = 0; i < _pool.Count; i++)
        {
            if (_pool[i].AvailableInPool)
            {
                yield return _pool[i];
            }
        }
    }
}

Tanto quanto eu sei (de acordo comist question), isso gerará lixo, pois o objeto IEnumerable precisará ser coletado. Nenhum dos elementos em _pool será coletado, pois o objetivo do pool é manter referências a todos eles para impedir a criação de lix

Alguém pode sugerir uma maneira de permitir a iteração sobre _pool para que nenhum lixo seja gerad

Ao iterar sobre o pool, todos os itens no pool que possuemAvailableInPool == true deve ser repetido. A ordem não importa.

questionAnswers(7)

yourAnswerToTheQuestion