I have had and continue to have the opposite experience of you. I use Ubuntu with VS Code and a few C# plugins that have greatly allowed me to navigate the .NET Core framework and write code with minimal references.
Even, with Visual Studio (unless you use R#), you will always run into issues where you aren't sure where the function or class lives. That's why you go read the documentation or ask SO.
The more you write webapi's the easier it is.
> Structural Typing
Dynamic was the closest to it, but it has significant performance issues. Tuples and structs do exist also.
> Allow functions outside of classes
No.
> Verbosity in C#
????
> most popular libraries will nudge you strongly to use Dependency Injection throughout the app and implement everything as a class and to extract interfaces out of it.
You do realize C# is mostly a strong Object Oriented language hence why they (the libraries) urge you to do that.
If you want functional so much use F#.