I might not have LINQ, but that doesn't mean I don't have functional programming. I use my own library with functional extensions to IEnumerable<T> (which I wrote before LINQ was ever made), so I can still write stuff like System.IO.File.ReadAllLines("foo.txt").Map(x => int.Parse(x)).FIlter(y => y > 1).Sum(), and I can do it all from .NET 2.0.
I agree with you about Java though. So much stuff in Java is just really dumb. You can do it, but it's painful - like properties ( get_foo(), set_foo() ), delegates ( a whole damn class implements IRunnable ), generics which aren't really generic, no lambdas, no pinvokes etc. Java always feels to me like a poor man's C#.