That said, if I'm making something new, I never go with an MS stack. I just wish I had some Powershell type options in Linux from time to time.
If your target users live in Microsoft 365 + Azure AD, the integration advantages of the MS stack are hard to ignore regardless of technical preference. Same goes for teams deep in the Google Workspace or Atlassian ecosystem.
For our greenfield project we went with Kotlin/Spring + Next.js on the basis that most of our target customers use Jira+Confluence, so Atlassian ecosystem familiarity mattered more than stack choice itself.
Of course, some potential clients demand MS based solutions. I simply decline those contracts and ring them up 12-18 months later to see if the CTO/CIO has been replaced.
I would personally chose it over Java, and I think it is more "batteries included" than Go.
If you need to write a business/web application that is fairly easy to maintain and has good performance, yes I would pick C#.
Also, while functional programming etc is possible in C#, all the code I've seen has been very Object-Oriented. Classes for days. Dependency injection, factories, and other "Design Patterns" aplently.
Obviously with Python or Node.js you'll likely have an easier time getting off the ground but the performance will be worse (if that matters)
source: SWE manager at MSFT, mostly C# stuff. 10+ YOE with other languages prior to joining
In the enterprise world, dotnet with c# is one of the best choices, although recently I've been doing a lot of logic just with python running on serverless functions.
If talking about non-web desktop/mobile software, the big issue comes down to GUI framework. Maui is optimized for mobile, Avalonia is superior on desktop. But other than that, thanks to the baked-in runtime it is becoming trivial to build a single GUI program and have it just run anywhere without significant rework.
Plus, C# has become an absolute pleasure to work with, and makes Java look practically obsolete. Hell, Java had to roll back its own implementation of string interpolation in 2024 because they just couldn’t make it work. C#? Working beautifully since 2015, and improved several times to even greater effect.
And if C#’s functional programming rustles your jimmies, you can easily use F# in the same project without complaint.
Finally, while Blazor webassembly might not be entirely ready for world+dog prime time just yet, it works great in an intranet where thick pipes are guaranteed, allowing me to give a hearty middle finger to everything JavaScript.
Honestly, while I will always evaluate every project to ensure that the programming platform is the best one possible, and have chosen other languages for good reasoning plenty of times. But anything which falls in the “anything will work well enough, generally speaking” bin has me reaching for DotNet almost every time.