Faixa Byte Order Mark da string em C #

Eu li posts semelhantes sobre isso e eles não respondem a minha pergunta.

Em C #, eu tenho uma string que estou obtendo de WebClient.DownloadString. Eu tentei set client.Encoding para novo UTF8Encoding (false), mas isso não fez diferença - eu ainda acabo com uma marca de ordem de byte para UTF-8 no início da seqüência de resultado. Eu preciso remover isso (para analisar o XML resultante com o LINQ) e quero fazer isso na memória.

Então eu tenho uma string que começa com \ x00EF \ x00BB \ x00BF, e eu quero remover isso, se existir. Agora estou usando

if (xml.StartsWith(ByteOrderMarkUtf8))
{
    xml = xml.Remove(0, ByteOrderMarkUtf8.Length);
}

mas isso parece errado. Eu tentei todos os tipos de código com fluxos, GetBytes e codificações e nada funciona. Alguém pode fornecer o algoritmo "certo" para retirar uma lista de materiais de uma string?

Obrigado!

questionAnswers(11)

yourAnswerToTheQuestion