Linq查询:这个数组是否包含这个字符串?

问题描述:

有没有更好的方法来做到这一点?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; 
    } 

比较中的不区分大小写很重要。

+1

这是如何比简单的foreach循环更清晰的超越我。 – 2010-01-20 00:03:12

+1

我认为所提出的解决方案对于foreach循环同样清楚。 – recursive 2010-01-20 17:39:53

+0

我不知道,但我认为每个人都是他们自己的。 – 2010-01-21 00:51:56

使用Any 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)); 
+0

伟大的思想,伟大的思想。直到换行。 – recursive 2010-01-19 23:25:15

+0

@recursive:是的,我看到水平滚动条,其余的是历史:) – 2010-01-19 23:27:27

非LINQ的选择:

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; 
} 

真的,事情就是这么简单,现在回去工作解决真正问题。 ;)

+1

雅雅好点,但我有兴趣学习语言功能以及:)。 – noctonura 2010-01-21 00:32:15