Unity uses Mono in order to achieve multi-platform compatibility. Because of that it wouldn\'t make sense to use .NET 4.0 or higher, since Mono does not support them either
.net 2.0 and it's subset is there for apiCompatiblilty that being said it's for using of 3rd party libraries but you can use .net 3.5 features in your code as you have stated that mono supports it for example system.linq, although there is some limitations on it for example some namespaces are not available for example : system.data , also linq has some constraints on mobile platforms http://forum.unity3d.com/threads/to-linq-or-not-to-linq.223887/