C # Accessing Management Objects in ManagementObjectCollection

I'm trying to access ManagementObjects in ManagementObjectCollection without using the foreach statement, maybe I missed something, but I can’t figure out how to do it, I need to do something like the following:

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

ManagementObjectCollection queryCollection = query.Get();

ManagementObject mo = queryCollection[0];
+8
source share
4 answers

ManagementObjectCollection implements IEnumerable or ICollection, so either you must iterate through IEnumerable (i.e. foreach), or CopyTo array through ICollection.

However, since it supports IEnumerable, you can use Linq:

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

OfType<ManagementObject> , ManagementObjectCollection IEnumerable, IEnumerable T.

+8

linq ManagementObjectCollection ( ). IEnumerable:

var queryCollection = from ManagementObject x in query.Get()
                      select x;

var manObj = queryCollection.FirstOrDefault();
+3

ManagementObjectCollection , , FirstOrDefault, linq, geeks, .net 3 (, 1.1), , , IEnumerable.

//TODO: Do the Null and Count Check before following lines
IEnumerator enumerator = collection.GetEnumerator();
enumerator.MoveNext();
ManagementObject mo = (ManagementObject)enumerator.Current;

ManagementObject

private ManagementObject GetItem(ManagementObjectCollection collection, int index)
{
            //TODO: do null handling 

            IEnumerator enumerator = collection.GetEnumerator();

            int currentIndex = 0;
            while (enumerator.MoveNext())
            {
                if (currentIndex == index)
                {
                    return enumerator.Current as ManagementObject;
                }

                currentIndex++;
            }

            throw new ArgumentOutOfRangeException("Index out of range");
 }

private ManagementObject GetItem(ManagementObjectCollection collection, int index)
{
            //TODO: do null handling 

            int currentIndex = 0;
            foreach (ManagementObject mo in collection)
            {
                if (currentIndex == index)
                {
                    return mo;
                }

                currentIndex++;
            }

            throw new ArgumentOutOfRangeException("Index out of range");
 }
+1

, :

ManagementObject mo = (ManagementObject)queryCollection[0];

... , ManagementObjectCollection (, , .)

-1

All Articles