Avatar ·

Como contar o número de ocorrências de um caractere ou substring em uma string em C#?

Olá a todos! Sou um desenvolvedor C# iniciante e me deparei com uma tarefa que parece simples, mas não consigo encontrar uma solução elegante. Preciso contar quantas vezes um determinado caractere (por exemplo, 'a') aparece em uma string. Tentei escrever um loop manualmente, mas parece complicado. Aqui está meu código atual:
string text = "Hello, world! Hello, C#!";
char target = 'l';
int count = 0;
for (int i = 0; i < text.Length; i++)
{
    if (text[i] == target)
        count++;
}
Console.WriteLine(count); // Exibe 4
Isso funciona, mas acho que deve haver uma solução embutida em C#. Além disso, preciso contar não apenas caracteres, mas também substrings inteiras. Por exemplo, quantas vezes a palavra "Hello" aparece na string "HelloHelloWorld". Se eu usar a mesma abordagem com loop, para substrings fica muito confuso — preciso verificar a correspondência em vários índices. Alguém pode me dizer se existem métodos prontos no .NET para contar ocorrências? Talvez algo como