В массиве хранится только имя файла, а не его полный путь или расширение.Вам нужно изменить это и позволить ему хранить FileName с расширением.
string[] file = Directory.GetFiles(loc + @"\shortcuts").Select(System.IO.Path.GetFileName).ToArray();
, а затем вам нужно изменить условие If следующим образом.
if (file.Contains(typed))
{
File.Delete(Path.Combine(loc + @"\shortcuts",typed));
Console.WriteLine("hi");
}
В этом сценариипользователю нужно будет ввести имя файла с расширением.
Если вы хотите, чтобы пользователь вводил только имя файла (без расширения, как в вашем коде), то вы можете столкнуться с ситуацией, когда может быть два файла с разным расширением.
"test.jpg"
"test.bmp"
Обновление
На основании вашего комментария, что вы не можете хранить расширения, пожалуйста, найдите обновленный код ниже.В этом случае вам не нужно менять массив.Поскольку вы храните только файлы lnk, вы можете добавить расширение к имени файла, чтобы завершить путь во время Path.Combine.
if (file.Contains(typed))
{
File.Delete(Path.Combine(loc , @"shortcuts",$"{typed}.lnk"));
Console.WriteLine("hi");
}