我试图在不使用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 GT;是必需的,因为ManagementObjectCollection支持IEnumerable但不支持IEnumerable of T.