There is much intensive talk about differences between every version from 2.0 to 5.0, how you do same thing in 2.0, then in 3.0, 4.0 and 5.0.
I really don't get why I would need to know the difference between them unless my job involves maintaining super old systems. (Which is quite common).
However for me personally it was not a good book at all because for me personally that information was completely useless.
Applying Domain-Driven Design and Patterns: With Examples in C# and .NET is a bit old, but still a good resource on how to implement some sort of DDD.
https://www.amazon.com/Applying-Domain-Driven-Design-Pattern...
It's mostly easy to comprehend and examples are in C#. The subject is complex though, so I'm not even sure a single book is enough.
https://www.amazon.co.uk/Patterns-Principles-Practices-Domai...
Pro .NET Best Practices - http://www.apress.com/9781430240235
It's getting a bit dated though.
Here are the books that I have found helpful.
Framework Design Guidelines - how to design libraries that anyone from Jon Skeet to Mort can use successfully
Effective C# - how to implement the usual idioms properly
CLR via C# - this is a dry read but has answers to many questions I would have never thought to ask.
C# in Depth - others have already commented on this
https://www.amazon.com/Real-World-Functional-Programming-Tom...
Also, check FSharp For Fun and Profit. Lots of details and tutorials about F# -> https://fsharpforfunandprofit.com also available as e-book -> https://www.gitbook.com/book/swlaschin/fsharpforfunandprofit...