To get Ethernet-only connectivity, you first have to filter for Ethernet interfaces:
NetworkInterface[] adapters = NetworkInterface.GetAllNetworkInterfaces();
var ethOnly = adapters.Where( x => x.NetworkInterfaceType = NetworkInterfaceType.Ethernet );
Maybe also include Ethernet3Megabit
and GigabitEthernet
.
Then you can check the resulting adapter(s) for connectivity:
// check first adapter for connectivity
bool upAndRunning = ethOnly[0]?.OperationalStatus == OperationalStatus.Up ?? false;
Mind that the operational status depends on more things than just a plugged or unplugged cable. If it's up, you can be pretty confident, that a cable is present and intact. If it's not up, you cannot know if a missing cable is the culprit, however.
tl/dr: I think the closest you can get is to monitor operational status, but not specifically cable (= layer 0) status.