Q:

Filtrar arquivo específico para não excluir

Como fazer o código não apagar um arquivo específico que eu quero entre os  .exe que eu pego. Exemplo: quero que ele não apague "teste.exe", mas que ainda continue apagando todo o resto.
Segue o código:
string[] arquivos = Directory.GetFiles(@"C:\temp\ae", "*.exe", SearchOption.TopDirectoryOnly);
foreach (string arquivo in arquivos)
{
    //nome = Path.GetFileName(arquivo);
    File.Delete(arquivo);
}

A:

foreach (var arquivo in Directory.GetFiles(@"C:\temp\ae", "*.exe", SearchOption.TopDirectoryOnly) {
    if (Path.GetFileName(arquivo) != "teste.exe") File.Delete(arquivo);
}

Se preferir pode fazer com LINQ, eu faria, porque é mais performático neste caso. Fazendo certo apesar de ter um pouco de overhead pela infraestrutura do LINQ ele faz apenas um loop. Na resposta do Barbetta ele faz 2 loops, um pra pegar os arquivos e outro para filtrar. O Enumerate não executa loop algum.
foreach (var arquivo in Directory.EnumerateFiles(@"C:\temp\ae", "*.exe", SearchOption.TopDirectoryOnly).Where(f => Path.GetFileName(f) != "teste.exe") File.Delete(arquivo);

Coloquei no GitHub para referência futura.

