Ho fatto proprio questa cosa in Java (in un contesto un poco più complicato, considerando che dovevo disegnare funzioni).
Ho adottato la scelta di trasformare l'espressione immessa dall'utente in un'espressione in notazione polacca inversa :
http://it.wikipedia.org/wiki/Notazione_polacca_inversa
Così facendo potrai effettuare le operazioni necessarie in maniera sequenziale senza dover tener conto delle parentesi e delle varie funzioni composte.
L'algoritmo per trasformare una espressione dalla notazione infissa alla notazione postfissa si chiama Shunting Yard (Dijkstra).
http://en.wikipedia.org/wiki/Shunting-yard_algorithm
Devi realizzare anche un piccolo parser per lavorare con i token dell'espressione.
Questo ovviamente se vuoi fare le cose a mano. Non conosco il C# , magari ci sono strade molto più facili.
Spero comunque di esserti stato d'aiuto in qualche modo