Caso inverso de todos os caracteres alfabéticos na string C #

Qual é a maneira mais simples de reverter o caso de todos os caracteres alfabéticos em uma string C #? Por exemplo "aBc1 $;" deve se tornar "AbC1 $;" Eu poderia escrever facilmente um método que faça isso, mas espero que exista uma chamada de biblioteca que eu não conheça e que facilite isso. Eu também gostaria de evitar uma lista de todos os caracteres alfabéticos conhecidos e comparar cada caractere com o que está na lista. Talvez isso possa ser feito com expressões regulares, mas eu não as conheço muito bem. Obrigado.

Obrigado pela ajuda. Criei um método de extensão de string para isso, inspirado principalmente na solução de Anthony Pegram, mas sem o LINQ. Eu acho que isso atinge um bom equilíbrio entre legibilidade e desempenho. Aqui está o que eu vim com.

public static string SwapCase(this string source) {
    char[] caseSwappedChars = new char[source.Length];
    for(int i = 0; i < caseSwappedChars.Length; i++) {
        char c = source[i];
        if(char.IsLetter(c)) {
            caseSwappedChars[i] =
                char.IsUpper(c) ? char.ToLower(c) : char.ToUpper(c);
        } else {
            caseSwappedChars[i] = c;
        }
    }
    return new string(caseSwappedChars);
}

questionAnswers(9)

yourAnswerToTheQuestion