После цикла нужно написать
return false;
потому что если будет ситуация, что в цикл не попадет программа, то хз что возвращать.
А вообще алгоритм тоже не верный - ваш цикл остановится после первой же проверки.
Метод можно переписать так:
public static bool isProf(string special)
{
dynamic sl = JObject.Parse(File.ReadAllText(@"..\..\..\..\data\source\specialization.json"));
foreach (var property in sl.specialization)
{
if (property == special)
{
return true;
}
}
return false;
}
А может так?
public static bool isProf(string special)
{
var sl = JObject.Parse(File.ReadAllText(@"..\..\..\..\data\source\specialization.json"));
return sl.specialization.Any(e => e == special);
}
upd: Еще лучше вынести поле sl в класс, и не читать файл каждый раз, а просто обращаться к полю.