2010-01-19 4 views
6

Y a-t-il une meilleure façon de faire cela?Requête Linq: ce tableau contient-il cette chaîne?

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

L'insensibilité à la casse dans la comparaison est importante.

+1

Comment cela est plus clair qu'une simple boucle foreach est au-delà de moi. –

+1

Je pense que les solutions proposées sont également claires pour une boucle foreach. – recursive

+0

Je ne le fais pas, mais à chacun leur propre je suppose. –

Répondre

16

Utilisez la méthode d'extension Any LINQ:

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

De cette façon, dès qu'une correspondance est trouvée, l'exécution s'arrête.

8

Essayez:

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

Grands esprits, grands esprits. Jusqu'au bout de la ligne. – recursive

+0

@recursive: oui, j'ai vu cette barre de défilement horizontale et le reste est l'histoire :) –

4

Une alternative non LINQ:

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

Comment cela?

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

    return false; 
} 

Vraiment, il est aussi simple que cela, obtenir maintenant de retour au travail de résolution des problèmes réels . ;)

+1

Ya ya bon point mais je suis intéressé à apprendre les fonctionnalités de la langue aussi bien :). – noctonura

Questions connexes