Optimizing for upvotes is, unfortunately, quite different from optimizing for providing good answers.
The first thing to note is that although language choice generally is about what you find fun to golf in, and you can compete among other people who use the same language, voters tend to favour programs which look golfed. Typically, this implies being as unreadable as possible, which gives golfing languages something of an advantage. (The unreadability of golfing languages is a bit of a problem here, as most people can't determine whether a golfing language entry is well-golfed or not; so they often just get upvoted indiscriminately.) People also tend to upvote entries which use languages they're familiar with, which would be another disadvantage of C# on a site like this. Finally, people tend to upvote entries in languages which are particularly fitting for the challenge; C# tends to do badly on this metric too.
Answering a challenge quickly is one of the most vital things for getting upvotes, though. The vast majority of interesting challenges on PPCG end up on the Hot Network Questions list, and get a lot of drive-by upvotes from other Stack Exchange sites (presumably mostly Stack Overflow, as it's by far the largest). If your answer isn't in while the challenge is on HNQ, it's unlikely to ever get the opportunity to score highly.
Another way to get more upvotes is to get more people looking at your answer. Probably the least abusive way to do this is to give useful feedback on other people's answers; that'll not only get them looking at the challenge (and thus possibly competing answers), but when they edit their answers to incorporate your feedback, they'll bump the post and more people will see your answer as a consequence. I've gotten quite a bit of reputation from this trick, but because it ends up improving the site as a whole, it doesn't even seem particularly underhanded.
Finally, answers to easy challenges tend to get more upvotes than answers to hard challenges. This is clearly backwards (answering a hard challenge tends to be more impressive!), but also pretty easy to explain: easy challenges have a lot more people attempting them (often multiple times), and thus a lot more people see the other answers to the same challenge. (An exception: if the challenge is so easy that your answer gets pushed back to page 2 on both "votes" and "active", it's unlikely to ever see the light of day unless it's the subject of a bounty.)
In order to get really high vote totals (100+), an answer normally needs to abuse the challenge specification in some way, or else optimise for something other than what the challenge is asking for. Such answers also have a risk of being downvoted and deleted. (Occasionally, such answers are highly upvoted and yet deleted anyway when a diamond moderator notices they break the rules.) About the best you can do is conclude that Stack Exchange voting incentives are completely messed up, and stop worrying about the votes.