C# as a language is very nice to use. 1.0 was lacking a few crucial features, such as generics (while using 1.1, I was using a code generator to create strongly-typed collections). It sort of felt like Python at the time - Batteries included. Even at 1.0, the standard library was quite extensive. By 2.0, generics were there, and that ameliorated my biggest complain with the language. Every iteration since has been a boon to developer productivity.
Some features, such as Linq are hit & miss for me. On one side, Linq is great in that it allows one to succinctly express complicated logic. On the other hand, it also hides a lot of complexity and it can be hard to determine the algorithmic complexity of even the simplest Linq statement, unless you closely examine all of the types involved.
Also, not to be forgotten is the tooling. From day 1, tooling for .Net (C# in particular) was top notch, and it's only gotten better over the years. IDE support was great (except lacking edit & continue) - Intellisense was fast and worked incredibly great (and fast), with the built-in support for XML documentation, its was also helpful & informative. Compared to the Intellisense support for C++, which was so bad I've sworn off VS for C++ work (last time I tried was VS 2005, when it'd either hang or crash often) and rely upon command-line Vim instead.
I don't do much C# currently, but I still love the language. I'm probably about 1% C# and the rest C++ currently.
Edit: I'm aware that C# was largely born after MS's ill-fated embrace of Java (J#, IIRC) and the suit from Sun. I see C# as an embrace what worked, kill what didn't. Java still has some large annoying works (Exception specs), and C# said: we don't want that.Even C++ realized that exception specs sucked and ditched them in 2011, but Java's still clinging to them. Also: objects vs value types.