2010-01-19 8 views
6

¿Hay una mejor manera de hacer esto?Consulta de Linq: ¿esta matriz contiene esta cadena?

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

La insensibilidad a las mayúsculas y minúsculas en la comparación es importante.

+1

Cómo es más claro que un simple bucle foreach me sobrepasa. –

+1

Creo que las soluciones propuestas son igualmente claras para un ciclo foreach. – recursive

+0

No, pero supongo que para cada uno. –

Respuesta

16

utilizar el método de extensión Any LINQ:

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

De esta manera, tan pronto como se encuentra una coincidencia, la ejecución se detendrá.

8

Probar:

return services.Any(s => 
      s.Equals(serviceName, StringComparison.InvariantCultureIgnoreCase)); 
+0

Grandes mentes, grandes mentes. Hasta el salto de línea. – recursive

+0

@recursive: sí, vi esa barra de desplazamiento horizontal y el resto es historia :) –

4

Una alternativa no LINQ:

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

¿Qué tal esto?

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

    return false; 
} 

realmente es así de simple, ya que volver al trabajo resolver problemas reales. ;)

+1

Ya es un buen punto, pero estoy interesado en aprender las características del idioma también :). – noctonura

Cuestiones relacionadas