Eliminar orden de byte marca de cadena en C #

He leído publicaciones similares sobre esto y no contestan mi pregunta.

En C #, tengo una cadena que obtengo de WebClient.DownloadString. He intentado configurar el cliente. Codificación a la nueva codificación UTF8 (falsa), pero eso no hace ninguna diferencia. Todavía termino con una marca de orden de bytes para UTF-8 al comienzo de la cadena de resultados. Necesito eliminar esto (para analizar el XML resultante con LINQ), y quiero hacerlo en la memoria.

Así que tengo una cadena que comienza con \ x00EF \ x00BB \ x00BF, y quiero eliminarla si existe. Ahora mismo estoy usando

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

pero eso se siente mal. He intentado todo tipo de código con secuencias, GetBytes y codificaciones, y nada funciona. ¿Puede alguien proporcionar el algoritmo "correcto" para eliminar una lista de materiales de una cadena?

¡Gracias!

Respuestas a la pregunta(11)

Su respuesta a la pregunta