Создайте коллекцию служб Windows, соответствующую регулярному выражению
Я хочу создать коллекцию служб Windows, которая будет соответствовать регулярному выражению, используя Where
пункт.
Например, у меня есть 3 службы Windows под названием:
RCLoad1
RCLoad2
RCLoad3
мой Regex будет выглядеть примерно так: "^RCLoad*"
Я хотел бы использовать что-то вроде:
ServiceController[] myServices = ServiceController.GetServices(ServerName)
.Where Regex.IsMatch(....)
Но я не могу заставить его работать.
1 ответ
Вы не уверены в точном сбое.
Есть ли GetServices(ServerName)
на самом деле вернуть список предметов?
Впоследствии вы не упоминаете, какое свойство имеет имя сервера, Name
? Поскольку код, который у вас есть, теперь принимает объекты ToString()
который, скорее всего, по умолчанию использует имя типа и, следовательно, сбой. (?)
Найдите правильное имя свойства и используйте шаблон RCLoad
, который найдет его где-нибудь в строке, а затем положить в ToList()
такие как
Regex rgx = new Regex(@"RCLoad"); // RCLoad can be anywhere in the string.
var controllers = ServiceController.GetServices(ServerName)
.Where(sc => rgx.IsMatch( sc.Name ))
.ToList();