C # Доступ к объектам управления в ManagementObjectCollection

Я пытаюсь чтобы получить доступ к ManagementObjects в ManagementObjectCollection без использования оператора foreach, может быть, я что-то упустил, но не могу понять, как это сделать, мне нужно сделать что-то вроде следующего:

ManagementObjectSearcher query = new ManagementObjectSearcher(
     "select Name, CurrentClockSpeed from Win32_Processor");

ManagementObjectCollection queryCollection = query.Get();

ManagementObject mo = queryCollection[0];
8
задан x0n 27 August 2010 в 02:22
поделиться

2 ответа

ManagementObjectCollection реализует IEnumerable или ICollection, так что либо вы должны перебирать его через IEnumerable (т.е. foreach), либо копировать в массив через ICollection.

Однако, поскольку он поддерживает IEnumerable, вы можете использовать Linq:

ManagementObject mo = queryCollection.OfType<ManagementObject>().FirstOrDefault()

OfType требуется, поскольку ManagementObjectCollection поддерживает IEnumerable, но не IEnumerable из T.

8
ответ дан 5 December 2019 в 15:16
поделиться

Вы вероятно, отсутствует приведение:

ManagementObject mo = (ManagementObject)queryCollection[0];

...так как я не думаю, что ManagementObjectCollection является универсальным (и поэтому не имеет типизированного индексатора.)

-1
ответ дан 5 December 2019 в 15:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: