Capitalizar palabras en una cadena usando c #

Necesito tomar una cadena y poner en mayúscula las palabras. Ciertas palabras ("en", "en", etc.) no están en mayúscula y se cambian a minúsculas si se encuentran. La primera palabra siempre debe estar en mayúscula. Los apellidos como "McFly" no están en el alcance actual, por lo que se aplicará la misma regla a ellos, solo la primera letra en mayúscula.

Por ejemplo: "de ratones y hombres por CNN" debe cambiarse a "De ratones y hombres por CNN". (Por lo tanto, ToTitleString no funcionará aquí)

Me pregunto cuál sería la mejor manera de hacerlo. Lo que pensé es dividir la cadena por espacios y repasar cada palabra, cambiarla si es necesario y concatenarla con la palabra anterior, y así sucesivamente. Parece bastante ingenuo y me preguntaba si hay una mejor manera de hacerlo, usando .Net 3.5.

Respuestas a la pregunta(9)

Su respuesta a la pregunta