Существует ли лучший способ сделать это?
public bool IsServiceRunning(string serviceName)
{
string[] services = client.AllServices();
return (from s in services
where s.Equals(serviceName, StringComparison.InvariantCultureIgnoreCase)
select s).Count() > 0;
}
Нечувствительность к регистру в сравнивании важна.
Используйте любой метод расширения
LINQ:
public bool IsServiceRunning(string serviceName)
{
string[] services = client.AllServices();
return services.Any(s =>
s.Equals(serviceName, StringComparison.InvariantCultureIgnoreCase));
}
таким образом, как только будет найдено совпадение, выполнение остановится.
Попробуйте:
return services.Any(s =>
s.Equals(serviceName, StringComparison.InvariantCultureIgnoreCase));
Ненациональная альтернатива:
public bool IsServiceRunning(string serviceName)
{
string[] services = client.AllServices();
return Array.Exists(services,
s => s.Equals(serviceName, StringComparison.InvariantCultureIgnoreCase));
}
Как насчет этого?
public bool IsServiceRunning(string serviceName)
{
string[] services = client.AllServices();
foreach( string service in services )
{
if( service.Equals( serviceName, StringComparison.OrdinalIgnoreCase ) )
{
return true;
}
}
return false;
}
Действительно, это так просто, теперь вернуться к решению работы реальных проблем. ;)