Why can't I send data from a PC to an Arduino?
You're not terminating your string properly.

The Arduino code is looking for 0x31 0x00.

The PC is sending just 0x31.

You need to send the 1 and a terminating character (say a carriage return) and look for that on the Arduino.  That would, for example, be sending 0x31 0x0d, and the Arduino would look for 0x0d as the terminating character.

Or you could tell the PC to transmit a 1 followed by a null character 0x00.  I don't know C# but if it follows standard escaping procedures you may be able to send something like "1\000".