我现在再次在 .NET 中编码时生疏了,我试图避免For Each
循环,玩Array.Findall
.
我想获取机器上安装的所有服务的数组,然后传递一个字符串来搜索它的友好显示名称以查找任何匹配项;如果找到,则返回匹配项及其实际服务名称。
即传递字符串“Calibre”,它将在所有服务中搜索显示名称中包含“Calibre”的任何服务。我这样做是一种“模糊搜索”,以防实际服务名称未知,并且如果碰巧有多个与传递的字符串匹配,则不会启动一堆服务/停了下来。
我有:
Dim strServiceName = "Calibre"
Dim scServices() As ServiceController = ServiceController.GetServices()
Dim value2() As String = Array.FindAll(scServices, Function(x) x.DisplayName.ToLower().Contains(strServiceName))
但得到错误:
“System.ServiceProcess.ServiceController 的一维数组”类型的值无法转换为“String 的一维数组”,因为“System.ServiceProcess.ServiceController”不是从“String”派生的。”
我知道我可能遗漏了一些真正简单的东西,但目前它正在躲避我,哈哈。