DataRowCollection:InternalDataCollectionBase
InternalDataCollectionBase:ICollection,IEnumerable
因此,DataRowCollection间接继承了IEnumerable。 通常,如果一个类继承IEnumerable,我们可以应用linq操作。 但是在DataRowCollection中这失败了。为什么呢?
答案 0 :(得分:2)
大多数Linq扩展方法(来自System.Linq.Enumerable)都使用泛型System.Collections.Generic.IEnumerable<T>,而不是InternalDataCollectionBase实现的非泛型System.Collections.IEnumerable。这就是您使用Cast
(或OfType
)扩展方法将IEnumerable
转换为IEnumerable<DataRow>
的原因。