C# 访问 ManagementObjectCollection 中的管理对象

标签 c# wmi

我试图在不使用 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/

相关文章:

c++ - Win32_PhysicalMedia SerialNumber 有时顺序错误

c# - UserControl.ParentForm 为空

c# - 将网络浏览器用于多个页面

c# - 为什么在最内层的 for 循环中添加大括号会产生如此奇怪的结果?

c# - WMI 和 Win32_Process - 确定是 32 位还是 64 位?

c# - 如何获取指定主机名的DNS别名?

C# 及时查找所有缺失的段

c# - 是否有人为 Lance Hunt C# 编码标准创建了自定义 StyleCop 和 FxCop 规则?

windows - 将文件从一个 Windows 服务器复制到另一个

java - Jinterop 冒充