Я не очень разбираюсь в PHP, но мне кажется, что ваш код не делает ничего, кроме отправки простого HTTP-запроса POST. Вы можете добиться того же в C #, используя WebRequest. Это должно помочь: https://docs.microsoft.com/en-us/dotnet/api/system.net.webrequest?view=netframework-4.8
РЕДАКТИРОВАТЬ: Что касается того, что вы спросили в своем комментарии, вы не можете просто добавить опции в WebRequest в виде массива, как в PHP. Эти API просто разные. Например, вы бы сделали WebRequest, подобный этому
WebRequest myWebRequest=WebRequest.Create("https://api.line.me/v2/bot/message/push");
, тогда вместо
CURLOPT_HTTPHEADER => $headers,
Вы бы сделали
myWebRequest.Headers.Add([header name], [header value]);
для каждого заголовка, который нужно добавить,(Или, может быть, есть способ добавить коллекцию заголовков) И так далее.
Кроме того, при исследовании того, как сделать POST с помощью WebRequest, это кажется довольно неуклюжим. Так что вы можете использовать вместо HttpClient. Вот еще, что выбрать. https://www.infoworld.com/article/3198673/my-two-cents-on-webclient-vs-httpclient-vs-httpwebrequest.html
Суть в том, что не так просто переписать что-то из PHP в C #. Это два совершенно разных зверя. Поэтому вам нужно немного больше изучать.
Или, может быть, кто-то придет и даст вам ответ:)