Q:

Como contar quantos caracteres maiúsculos existem em uma string? 

Como contar quantos caracteres maiúsculos existem em uma string? 

A:

Há várias formas de fazer isso:

Usando LINQ:
var str = "Miguel Angelo";
var contagem = str. Count(char. IsUpper);

Nota: deve-se importar o namespace do LINQ: using System. Linq;
Sem usar LINQ:
var str = "Miguel Angelo";
var contagem = 0;
for (int itChar = 0; itChar < str. Length; itChar++)
    if (char. IsUpper(str[itChar]))
        contagem++;

Performance
Fiz 4 testes de performance:

Sm str - LINQ: teste com string de 13 chars usando LINQ
Sm str - FOR: teste com string de 13 chars usando for
Lg str - LINQ: teste com string de 13*1024 chars usando LINQ
Lg str - FOR: teste com string de 13*1024 chars usando for

Resultados:
Exec #1
    Sm str - LINQ     1.092µs (84ns por char)
    Sm str - FOR      0.462µs (36ns por char)
    Lg str - LINQ   609.931µs (46ns por char)
    Lg str - FOR    425.092µs (32ns por char)
Exec #2
    Sm str - LINQ     1.013µs (78ns por char)
    Sm str - FOR      0.436µs (34ns por char)
    Lg str - LINQ   606.826µs (46ns por char)
    Lg str - FOR    433.585µs (33ns por char)
Exec #3
    Sm str - LINQ     1.017µs (78ns por char)
    Sm str - FOR      0.459µs (35ns por char)
    Lg str - LINQ   616.975µs (46ns por char)
    Lg str - FOR    443.754µs (33ns por char)
Exec #4
    Sm str - LINQ     1.086µs (84ns por char)
    Sm str - FOR      0.458µs (35ns por char)
    Lg str - LINQ   683.890µs (51ns por char)
    Lg str - FOR    441.979µs (33ns por char)

Conclusão
Só dá para notar a diferença quando a string for maior que 100 milhões de caracteres.  Seria um arquivo de ~100MB em utf-8. 
Então: Use a versão LINQ em 99,99% dos casos.