Letras maiúsculas em uma string usando c #

Eu preciso pegar uma corda e colocar letras maiúsculas nela. Certas palavras ("in", "at" etc.) não são maiúsculas e são alteradas para minúsculas se encontradas. A primeira palavra deve sempre ser maiúscula. Sobrenomes como "McFly" não estão no escopo atual, portanto a mesma regra se aplicará a eles - apenas a primeira letra em maiúscula.

Por exemplo: "de ratos e homens pela CNN" deve ser alterado para "de ratos e homens pela CNN". (Portanto, ToTitleString não funcionará aqui)

Eu estou querendo saber qual seria a melhor maneira de fazer isso. O que pensei foi dividir a cadeia por espaços e passar por cada palavra, alterando-a se necessário e concatenando-a com a palavra anterior, e assim por diante. Parece bastante ingênuo e eu queria saber se existe uma maneira melhor de fazê-lo, usando o .Net 3.5.

questionAnswers(9)

yourAnswerToTheQuestion