A escolha certa realmente depende do tamanho da string de entrada e de quais requisitos de força e memória, mas eu usaria uma expressão regular como
string result = Regex.Replace(s, @"\r\n?|\n|\t", String.Empty);
Ou, se precisarmos aplicar a mesma substituição várias vezes, é melhor usar uma versão compilada para o Regex como
var regex = new Regex(@"\r\n?|\n|\t", RegexOptions.Compiled);
string result = regex.Replace(s, String.Empty);
NOTA: cenários diferentes requerem abordagens diferentes para obter o melhor desempenho e o consumo mínimo de memória