我试图在不使用 foreach 语句的情况下访问 ManagementObjectCollection 中的 ManagementObjects,也许我遗漏了一些东西,但我不知道该怎么做,我需要执行如下操作:
ManagementObjectSearcher query = new ManagementObjectSearcher(
"select Name, CurrentClockSpeed from Win32_Processor");
ManagementObjectCollection queryCollection = query.Get();
ManagementObject mo = queryCollection[0];
最佳答案
ManagementObjectCollection实现 IEnumerable 或 ICollection,因此您必须通过 IEnumerable(即 foreach)对其进行迭代或通过 ICollection 复制到数组。
但是因为它支持 IEnumerable 你可以使用 Linq :
ManagementObject mo = queryCollection.OfType<ManagementObject>().FirstOrDefault()
OfType<ManagementObject>
是必需的,因为 ManagementObjectCollection 支持 IEnumerable 但不支持 IEnumerable of T .
关于C# 访问 ManagementObjectCollection 中的管理对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3580885/