In the last couple of years C# has gotten better than ever. LINQ, Lambdas & Generics combined with the IDE's autocomplete and refactorings have made the language really nice for power devs.
The next release will include a Compiler as a Service which could be a game changer if it's embraced by the community and if it's not borked by Microsoft.
A good rule of thumb for .Net is that anything from Microsoft which is built around a tool should be avoided like the plague. For example Entity Framework and WPF are horrible tool-bound monsters. They don't play well with version control, don't play well with clean coding (POCOs) and almost feel designed to sell other tools (SQL Server / Expression Blend).
Entity Framework is especially bad. It combines terrible performance, terrible scaling (it has terrible support for large schemas) and until recently didn't even support "code first" development.
Thankfully, like other dinosaurs that kind of thing is going the way of VB6.
To add a bit of context: I have a pretty broad background - been coding for 21 years (started at 10) and have experience implementing something significant in: C64 (BASIC/6510asm), Pascal/Delphi, VB, Java, PHP/HTML/JS, TSQL/SQL, C# and ActionScript/Flex. I've dabbled with Ruby and the beautiful Python.
I abandoned dynamically typed languages for serious projects (those expected to work for > 5 years) because of the poor refactoring support and the dominance of style over substance in the community. I work in the Enterprise, and there software maintenance quickly dominates the cost of projects making the big two static languages a better choice.
I still, of course, turn to dynamic language when they're the best solution to the problem. For example for situations where speed of development dominates returns (think opportunity cost) or where a language is deeply embedded in a specific community (Python and NLP).