2010-01-19 7 views
6

Gibt es einen besseren Weg, dies zu tun?Linq Abfrage: enthält dieses Array diese Zeichenfolge?

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

Die Groß-/Kleinschreibung im Vergleich ist wichtig.

+1

Wie das ist klarer als eine einfache foreach-Schleife ist mir ein Rätsel. –

+1

Ich denke, die vorgeschlagenen Lösungen sind für eine foreach-Schleife gleichermaßen klar. – recursive

+0

Ich nicht, aber jeder für sich, nehme ich an. –

Antwort

16

Verwenden Sie die Any Linq Extension-Methode:

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

Auf diese Weise, sobald eine Übereinstimmung gefunden wird, wird die Ausführung zu stoppen.

8

Versuchen:

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

Großartige Köpfe, großartige Köpfe. Bis zum Zeilenwechsel. – recursive

+0

@recursive: yep, ich sah diese horizontale Bildlaufleiste und der Rest ist Geschichte :) –

4

Eine nicht-LINQ Alternative:

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

Wie wäre das?

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

    return false; 
} 

Wirklich, ist es so einfach, jetzt wieder an die Arbeit echte Probleme zu lösen. ;)

+1

Ya ya guter Punkt, aber ich bin daran interessiert, die Sprachfunktionen zu lernen :). – noctonura

Verwandte Themen