Вы пропустили .NET 3.5, который на самом деле больше, чем .NET 3.0; .NET 3.0 добавляет такие вещи, как WCF / WPF / WF, которые являются более удачным способом сделать то, что (как правило) уже было в рамках.
Однако в .NET 3.5 добавлен LINQ, который огромен и широк. LINQ-to-Objects является наиболее используемым, предоставляя более удобную модель для обычного кода. Но LINQ-to-SQL и EF (в SP1) являются инструментами ORM (доступно много других).
.NET 4.0 нацелена на несколько проблем, в частности на многопоточность (TPL / CCR) и динамические объекты (DLR). В C # 4.0 внесено изменений, в основном , для упрощения работы с динамическими объектами.