Por que o compilador C # cria DisplayClass privado ao usar o método LINQ Any () e como posso evitá-lo?

Eu tenho esse código (o código inteiro não é importante, mas pode ser visto emesse link):

internal static class PlayCardActionValidator
{
    public static bool CanPlayCard(...)
    {
        // ...
        var hasBigger =
            playerCards.Any(
                c => c.Suit == otherPlayerCard.Suit
                     && c.GetValue() > otherPlayerCard.GetValue());
        // ...
    }
}

Depois de abrir o código no descompilador (ILSpy), por exemplo, notei a existência da classe recém-criada<>c__DisplayClass0_0 pelo compilador C #:

Isso não seria um problema para mim se esse código não fosse crítico para o desempenho do sistema. Esse método é chamado milhões de vezes e o coletor de lixo está limpando esses<>c__DisplayClass0_0 instâncias que diminuem o desempenho:

Como evitar a criação dessa classe (suas instâncias e coleta de lixo) ao usar o métodoAny método?

Por que o compilador C # cria essa classe e existe alguma alternativa deAny() Eu posso usar?

questionAnswers(2)

yourAnswerToTheQuestion