C#访问ManagementObjectCollection中的管理对象

Jam*_*sla 8 c# wmi

我试图在不使用foreach语句的情况下访问ManagementObjectCollection中的ManagementObjects,也许我错过了一些但我无法弄清楚如何去做,我需要做类似以下的事情:

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

ManagementObjectCollection queryCollection = query.Get();

ManagementObject mo = queryCollection[0];
Run Code Online (Sandbox Code Playgroud)

Pre*_*gha 8

ManagementObjectCollection 实现IEnumerable或ICollection,因此要么必须通过IEnumerable(即foreach)迭代它,要么通过ICollection复制到数组.

但是因为它支持IEnumerable,所以你可以使用Linq:

ManagementObject mo = queryCollection.OfType<ManagementObject>().FirstOrDefault()
Run Code Online (Sandbox Code Playgroud)

OfType<ManagementObject>是必需的,因为ManagementObjectCollection支持IEnumerable而不支持IE的IEnumerable.

  • 我需要添加`OfType`...`ManagementObject mo = queryCollection.OfType&lt;ManagementObject&gt;().First();` (2认同)