recuento de caracteres menos caracteres HTML C #

Estoy tratando de encontrar una manera de contar el número de caracteres en una cadena, truncar la cadena y luego devolverla. Sin embargo, necesito esta función para NO contar etiquetas HTML. El problema es que si cuenta las etiquetas HTML, si el punto truncado está en el medio de una etiqueta, la página aparecerá rota.

Esto es lo que tengo hasta ahora ...

public string Truncate(string input, int characterLimit, string currID) {
    string output = input;

    // Check if the string is longer than the allowed amount
    // otherwise do nothing
    if (output.Length > characterLimit && characterLimit > 0) {

        // cut the string down to the maximum number of characters
        output = output.Substring(0, characterLimit);

        // Check if the character right after the truncate point was a space
        // if not, we are in the middle of a word and need to remove the rest of it
        if (input.Substring(output.Length, 1) != " ") {
            int LastSpace = output.LastIndexOf(" ");

            // if we found a space then, cut back to that space
            if (LastSpace != -1)
            {
                output = output.Substring(0, LastSpace);
            }
        }
        // end any anchors
        if (output.Contains("<a href")) {
            output += "</a>";
        }
        // Finally, add the "..." and end the paragraph
        output += "<br /><br />...<a href='Announcements.aspx?ID=" + currID + "'>see more</a></p>";
    }
    return output;
}

Pero no estoy contento con esto. ¿Hay una mejor manera de hacer esto? Si pudiera proporcionar una nueva solución a esto, o tal vez sugerencias sobre qué agregar a lo que tengo hasta ahora, sería genial.

Descargo de responsabilidad: nunca he trabajado con C #, por lo que no estoy familiarizado con los conceptos relacionados con el lenguaje ... Estoy haciendo esto porque tengo que hacerlo, no por elección.

Gracias Hristo

Respuestas a la pregunta(1)

Su respuesta a la pregunta