The C# version is using Linq. Which, as a C# developer, I've never really been able to wrap my head around. Now, that might be due to lack of trying, in that I've never really been forced to deal with Linq in a manner where I couldn't just work around it, and I've never put any serious effort into training on it, but an awful lot of it seems to be of the non-obvious-way-to-do-things variety. The entire X => X.Something syntax seems confusing and illogical to me. Where does the type of X come from? Where are the properties coming from? What's with the X => bit? If "IsCar" is a property of the members of the myVehicles array, why can't I do something like "myVehicles.where(IsCar).select(LegRoom).sort().foreach(display)?
Perhaps my aversion to Linq is because my exposure to it has been having very complex use of it randomly thrown at me in large projects without having learned it first, and then having to make changes in that Linq code without having been given the time to properly understand it in the first place.