ManagementObjectCollection沒有實現索引器,不過是你可以你,如果你正在使用LINQ,但誰使用.NET 3或更早版本(比如我仍然怪才FirstOrDefault擴展功能在1.1上工作)可以使用以下代碼,它是從任何集合實現的IEnumerable接口獲取第一項的標準方式。
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");
}
OR
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");
}
我需要添加'OfType' ...'的ManagementObject月= queryCollection.OfType <
以下是兩種不同的方式從任何索引檢索的ManagementObject ManagementObject>()。First();' – 2014-11-14 03:21:12
我沒有在'ManagementObject'中看到FirstOrDefault(),只有'OfType()。FirstOrDefault()'爲我工作 –
Jack
2016-04-25 19:30:15
對於任何和我一樣困惑,在這個答案中有一個錯字。它應該爲:ManagementObject mo = queryCollection.OfType()。FirstOrDefault()' –
SGS
2017-06-01 14:58:11