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;
}
比较中的不区分大小写很重要。
使用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));
伟大的思想,伟大的思想。直到换行。 – recursive 2010-01-19 23:25:15
@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;
}
真的,事情就是这么简单,现在回去工作解决真正问题。 ;)
雅雅好点,但我有兴趣学习语言功能以及:)。 – noctonura 2010-01-21 00:32:15
这是如何比简单的foreach循环更清晰的超越我。 – 2010-01-20 00:03:12
我认为所提出的解决方案对于foreach循环同样清楚。 – recursive 2010-01-20 17:39:53
我不知道,但我认为每个人都是他们自己的。 – 2010-01-21 00:51:56