我现在又开始用.NET编写代码了,我试图避免使用For Each循环,使用Array.Findall。
我想获取安装在机器上的所有服务的数组,然后传递一个字符串来搜索匹配的友好显示名称;如果找到,返回匹配值以及它们的实际服务名称。
即传递字符串“杯”,该字符串将搜索所有服务,以查找其显示名称中有“线宽”的任何服务。我这样做是作为一种“模糊搜索”,以防不知道实际的服务名称,而且如果有多个匹配传递的字符串的服务,将不会启动/停止一组服务。
我有:
Dim strServiceName = "Calibre"
Dim scServices() As ServiceController = ServiceController.GetServices()
Dim value2() As String = Array.FindAll(scServices, Function(x) x.DisplayName.ToLower().Contains(strServiceName))但是得到错误:
类型‘1维System.ServiceProcess.ServiceController’的值不能转换为‘一维字符串数组’,因为'System.ServiceProcess.ServiceController‘不是从’String‘派生出来的。“
我知道我可能错过了一些很简单的东西,但现在它在逃避我,亲爱的。
发布于 2014-07-24 04:57:59
返回的Array.FindAll<T>的遗传类型与数组的遗传类型相同,即这里的ServiceController。
如果要获取所有服务的名称,其中包含其DisplayName中的特定名称,则应从ServiceController中选择DisplayName,如下所示:
Dim value2() As String = Array.FindAll(scServices, Function(x) x.DisplayName.ToLower().Contains(strServiceName))
.Select(Function(x) x.DisplayName).ToArray()https://stackoverflow.com/questions/24923911
复制相似问题