O laço mais adequado para esse tipo de situação, sem dúvida, é o foreach, já que não precisamos lidar com índices específicos, como ao colocar a nota para um aluno com base na posição da lista de presença, por exemplo. Por isso, como o objetivo é simplesmente percorrer e processar todos os valores dessa lista, usamos o foreach.
O processo do código é simples: teremos uma variável chamada nota, sendo equivalente a cada valor de notas dentro do loop. Inicialmente, com base nessa nota, verificamos a situação. Se a nota for abaixo de 7, a situação receberá o valor "abaixo da média"; caso contrário, receberá "indo muito bem".
List<double> notas= new List<double> {
8.5,
6.2,
9.1,
5.8,
7.4
};
string situacao = "";
foreach (double nota in notas) {
if (nota < 7) situacao = "abaixo da média";
else situacao = "indo muito bem";
Console.WriteLine ($"O aluno com a nota {nota} está {situacao}.");
}