Lua is dynamically typed, which can be very convenient in small projects when you want to quickly experiment with things, and can also be problematic in bigger projects when you forget what variable names you used. C# is strongly typed, which gives it better autocompletion support, something that isn't really possible to get perfect in Lua.
Coming from a BASIC background, I always saw C# as ugly C syntax combined with a lack of functionality. A language like BlitzMax or PureBasic (or even VB) always seemed much nicer to me. However, it does give you much of the functionality of C++, with fast compile times, and good support for autocompletion in Visual Studio, so I can understand why it would be good for games. For most game developers, it's about the same functionality as C++ with faster compile times and no need for header files.
I think C# was Microsoft's reaction to the growing popularity of Java at the time, which kind of explains some of the decisions. I find it strange that a now-dead fad is what killed BASIC, kind of like how the iPhone sent Windows into a decade-long descent into madness before they finally killed off all the cell phone interfaces in Windows 11.