My primary development experience is in Java, although I have some C# experience as well. I have a library of material that I turn to often for those things that you do just infrequently enough that you don't remember the details from the last time you did something similar. The most valuable aspect of this library is that it's large enough to include most of the theory and practice that you need - but small enough that you know how to navigate the entire collection quickly and easily.
Here's a list of my most-used Java material (in priority order, because I'm an engineer, and I order things...). Can you recommend equivalents for the C# world? What categories am I missing?
- Effective Java. Bloch. API-level patterns and anti-patterns in Java. (the most important book on my shelf, hands down.)
- Java Concurrency in Practice. Goetz. Concurrency - both theory and Java practice.
- Java Generics and Collections. Naftalin. Can't remember for certain which implementation of Set you should choose for this particular task?
- Headfirst Design Patterns. Freeman. Can't quite get your head around how to implement that really cool pattern from your Smalltalk days without Closures? Examples here are in Java (otherwise GoF is better.)
- Java in a Nutshell. Flanagan. I know...it's in the JavaDocs. But sometimes I'm a dead tree snob, and need to stop staring at my monitor for a minute while I look something up.
- JDBC API Tutorial and Reference. Fisher. This one is probably on the shelf (and used significantly) because I did some work on an ETL system. Probably not as widely applicable.
- Ant. Holzner. Build scripts. Love and hate. You get one done, and don't think about them again for a year. Again - I know...it's on the web. Again, occasionally I'm a dead tree snob.
Other similar questions:
http://stackoverflow.com/questions/72893/whats-the-best-way-to-learn-c-quickly
http://stackoverflow.com/questions/172917/best-intermediate-level-c-reference-book