Запрос Linq: этот массив содержит эту строку?

Существует ли лучший способ сделать это?

    public bool IsServiceRunning(string serviceName)
    {
        string[] services =  client.AllServices();
        return (from s in services
                where s.Equals(serviceName, StringComparison.InvariantCultureIgnoreCase)
                select s).Count() > 0;
    }

Нечувствительность к регистру в сравнивании важна.

6
задан noctonura 19 January 2010 в 23:17
поделиться

4 ответа

Используйте любой метод расширения LINQ:

public bool IsServiceRunning(string serviceName)
{
    string[] services =  client.AllServices();
    return services.Any(s => 
        s.Equals(serviceName, StringComparison.InvariantCultureIgnoreCase));
}

таким образом, как только будет найдено совпадение, выполнение остановится.

16
ответ дан 8 December 2019 в 03:09
поделиться

Попробуйте:

return services.Any(s =>
            s.Equals(serviceName, StringComparison.InvariantCultureIgnoreCase));
8
ответ дан 8 December 2019 в 03:09
поделиться

Ненациональная альтернатива:

public bool IsServiceRunning(string serviceName)
{
    string[] services =  client.AllServices();
    return Array.Exists(services,
        s => s.Equals(serviceName, StringComparison.InvariantCultureIgnoreCase));
}
4
ответ дан 8 December 2019 в 03:09
поделиться

Как насчет этого?

public bool IsServiceRunning(string serviceName)
{
    string[] services =  client.AllServices();
    foreach( string service in services )
    {
        if( service.Equals( serviceName, StringComparison.OrdinalIgnoreCase ) )
        {
            return true;
        }
    }

    return false;
}

Действительно, это так просто, теперь вернуться к решению работы реальных проблем. ;)

2
ответ дан 8 December 2019 в 03:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: