2013-07-18 120 views
3

如果我有一個通用的IEnumerable<int>。我可以簡單地套用ToList()ToArray()FirstOrDefault()它。如何將這些方法應用於非泛型IEnumerable如何獲得IEnumerable的第一個元素(非泛型)?

+0

附加代碼,以便我們可以幫助你更好。據我所知'IEnumerable的'不是一般 – wudzik

+2

@wudzik IEnumerable的是駐留在的System.Collections中的通用命名了IEnumerable 接口的實現,因此它是通用的。 – Abbas

回答

6

你有兩個選擇:

  1. 如果你知道你的枚舉所有對象都是同一類型的,你可以將它轉換爲通用IEnumerable<YourType>。在最壞的情況下,你可以隨時使用object

    object first = enumerable.Cast<object>().First(); 
    
  2. 或者你可以用枚舉,讓一步,取當前元素:

    IEnumerator enumerator = enumerable.GetEnumerator(); 
    enumerator.MoveNext(); 
    object first = enumerator.Current; 
    
1

你這裏有兩種選擇:

  1. 按照疑問,@Danier吉梅內斯建議,並利用Cast<TResult>甲基的OD。演員陣容後,你會得到一個通用的枚舉,你可以在其上應用First()方法。這也是最簡單的實現。

  2. 使用GetEnumerator()方法,它給你一個IEnumerator。從這裏你可以遍歷集合。從MoveNext()開始,可以使用Current屬性獲取第一個元素。

編輯: 安德烈就超過我了。

1

很簡單 看看此示例代碼

IEnumerable集合; ---在這裏填寫收集--- collection.OfType()。ToList()或collection.OfType()。ToArray的 collection.OfType()。ToList()或collection.OfType()。ToArray的() 它過濾(INT/MyClass的)對象類型並將其轉換爲一個列表或數組

相關問題