Как проверить, совпадает ли элемент массива с любым элементом другого массива с помощью Linq?



Мне нужно постоянно проверять, выполняется ли один из нескольких процессов. До сих пор я использовал:



Process[] Processes = Process.GetProcesses();


Для получения текущих запущенных процессов. У меня есть строковый массив, содержащий список процессов, которые я хочу убедиться, что они не запущены, прежде чем продолжить:



string[] ProcessesToCheck = new string[] {"Chartvue",
"collvue"
,"damage"
,"Datagen"
,"datagenlegacy"
,"FAST_SACS"
,"hullmesher"
,"hullmodeler"
,"ifatigue"};


Вопрос в том, как мне проверить, что все члены ProcessName процессов не содержат ни одного члена ProcessesToCheck?

758   2  

2 ответов:

Вы можете получить имена процессов в хэш-набор (для более быстрого поиска), а затем использовать метод Any, чтобы проверить, присутствует ли какое-либо из имен процессов в ProcessesToCheck

var processNames = new HashSet<string>(Processes.Select(p => p.ProcessName));
bool isExists = ProcessesToCheck.Any(processNames.Contains);

Вы можете попробовать что-то вроде этого:

var isExists = Processes.Any(x => ProcessesToCheck.Contains(x.ProcessName));
В приведенном выше коде мы используем метод Any, чтобы увидеть, существует ли хотя бы один процесс в массиве Processes, свойство которого называется ProcessName содержится в массиве под названием ProcessesToCheck.

Для получения дополнительной информации о Any, пожалуйста, посмотрите Здесь и для получения дополнительной информации о Contains, пожалуйста, посмотрите здесь.

Comments

    Ничего не найдено.